2013-06-05 10 views
8

Sau khi một số nhà phát triển đang làm việc trên bảng phân cảnh trong một trong các ứng dụng của chúng tôi, chúng tôi hiện gặp phải lỗi này khi cố gắng mở bảng phân cảnh trong Xcode Interface Builder:Không thể mở bảng phân cảnh (com.apple.InterfaceBuilder lỗi -1.)

Không thể mở tài liệu "MainStoryboard_iPhone.storyboard". Thao tác không thể hoàn thành. (com.apple.InterfaceBuilder lỗi -1.)

Kiểm tra nhật ký bảng điều khiển để biết thêm thông tin.

Tất cả chúng ta đang chạy phiên bản mới nhất của Xcode (4.6.2 4H1003) và tất cả các thay đổi đã được thực hiện cho bảng phân cảnh trong Trình tạo giao diện. Không có thông tin bổ sung nào hiển thị trong nhật ký bảng điều khiển. Tôi giả định lỗi là đề cập đến cùng một bảng điều khiển đăng nhập, nơi các báo cáo đăng nhập và gỡ lỗi xuất hiện, hoàn toàn trống.

Một trong những nhà phát triển nhận được lỗi này khi cố gắng mở bảng phân cảnh trong một ứng dụng khác mà tôi đang thực hiện. Câu chuyện này mở ra tốt cho tôi trong Xcode trên máy tính của tôi tuy nhiên, vì vậy chúng tôi không bao giờ bận tâm để nhìn vào lỗi nhiều hơn vào thời điểm đó (điều này xảy ra lần đầu tiên một vài tháng trước). Nhưng lần này, tất cả chúng ta đều gặp lỗi tương tự (4 trong số chúng tôi đã thử nghiệm mở nó trên máy tính của chính mình).

Chúng tôi đang sử dụng GitHub để quản lý kiểm soát nguồn của chúng tôi trên cả hai dự án, sử dụng một số khách hàng Git khác nhau. Bất kỳ ý tưởng nào về những gì gây ra lỗi này và cách sửa lỗi đó?

UPDATE: Đây là sản phẩm để /var/logs/system.log trên máy tính của tôi sau khi cố gắng mở các kịch bản:

Jun 5 16:38:44 my-computer-host-name Xcode[271]: Exception raised while unarchiving document objects - *** -[__NSArrayM insertObject:atIndex:]: object cannot be nil 
Jun 5 16:38:45 my-computer-host-name Xcode[271]: [MT] DVTAssertions: Warning in /SourceCache/IDEKit/IDEKit-2113/Framework/Classes/Editor/IDEEditorDocument.m:1364 
    Details: Message sent to invalidated IBStoryboardDocument instance <IBStoryboardDocument: 0x40ecc34c0>. Backtrace for invalidation: 
     0 0x000000010d814f86 -[IDEEditorDocument _invalidate] (in IDEKit) 
     1 0x000000010d883291 -[IDEEditorDocument initForURL:withContentsOfURL:ofType:error:] (in IDEKit) 
     2 0x00000001103005d0 -[IBDocument initForURL:withContentsOfURL:ofType:error:] (in IDEInterfaceBuilderKit) 
     3 0x000000010d882efd +[IDEDocumentController _newEditorDocumentWithClass:forURL:withContentsOfURL:ofType:extension:error:] (in IDEKit) 
     4 0x000000010d882dba -[IDEEditorContext _newEditorDocumentWithClass:forURL:withContentsOfURL:ofType:extension:error:] (in IDEKit) 
     5 0x000000010d88290c -[IDEEditorContext _openNavigableItem:withContentsOfURL:documentExtension:shouldInstallEditorBlock:] (in IDEKit) 
     6 0x000000010d991628 -[IDEEditorContext _notifyDelegateAndOpenNavigableItem:withContentsURL:documentExtensionIdentifier:locationToSelect:annotationRepresentedObject:stateDictionary:annotationWantsIndicatorAnimation:exploreAnnotationRepresentedObject:highlightSelection:] (in IDEKit) 
     7 0x000000010d8bfe7b -[IDEEditorContext _notifyDelegateAndOpenEditorOpenSpecifier:updateHistory:] (in IDEKit) 
     8 0x000000010d8bf99c -[IDEEditorContext _openEditorOpenSpecifier:updateHistory:] (in IDEKit) 
     9 0x000000010d8bf8ba -[IDEEditorContext openEditorOpenSpecifier:] (in IDEKit) 
    10 0x000000010d8cbf40 -[IDEEditorGeniusMode openEditorOpenSpecifier:editorContext:] (in IDEKit) 
    11 0x000000010d8bf76e -[IDEEditorArea _openEditorOpenSpecifier:editorContext:takeFocus:] (in IDEKit) 
    12 0x000000010d9a3174 __108+[IDEEditorCoordinator _doOpenEditorOpenSpecifier:forWorkspaceTabController:editorContext:target:takeFocus:]_block_invoke (in IDEKit) 
    13 0x000000010d8bf6cc +[IDEEditorCoordinator _doOpenWithWorkspaceTabController:editorContext:target:allowFallback:documentURL:usingBlock:] (in IDEKit) 
    14 0x000000010d8bf12d +[IDEEditorCoordinator _doOpenEditorOpenSpecifier:forWorkspaceTabController:editorContext:target:takeFocus:] (in IDEKit) 
    15 0x000000010d8bed45 -[_IDEOpenRequest _runIfNecessary] (in IDEKit) 
    16 0x00007fff8bfde395 __NSFireDelayedPerform (in Foundation) 
    17 0x00007fff8b169804 __CFRUNLOOP_IS_CALLING_OUT_TO_A_TIMER_CALLBACK_FUNCTION__ (in CoreFoundation) 
    18 0x00007fff8b16931d __CFRunLoopDoTimer (in CoreFoundation) 
    19 0x00007fff8b14ead9 __CFRunLoopRun (in CoreFoundation) 
    20 0x00007fff8b14e0e2 CFRunLoopRunSpecific (in CoreFoundation) 
    21 0x00007fff8ac57eb4 RunCurrentEventLoopInMode (in HIToolbox) 
    22 0x00007fff8ac57c52 ReceiveNextEventCommon (in HIToolbox) 
    23 0x00007fff8ac57ae3 BlockUntilNextEventMatchingListInMode (in HIToolbox) 
    24 0x00007fff85f5d563 _DPSNextEvent (in AppKit) 
    25 0x00007fff85f5ce22 -[NSApplication nextEventMatchingMask:untilDate:inMode:dequeue:] (in AppKit) 
    26 0x00007fff85f541d3 -[NSApplication run] (in AppKit) 
    27 0x00007fff85ef8c06 NSApplicationMain (in AppKit) 
    28 0x000000010cbc9b6f (in Xcode) 
    29 0x000000010cbc9b00 (in Xcode) 
    30 0x0000000000000002 

    Object: <IBStoryboardDocument: 0x40ecc34c0> 
    Method: -updateChangeCount: 
    Thread: <NSThread: 0x40030a220>{name = (null), num = 1} 
    Please file a bug at http://bugreport.apple.com with this warning message and any useful information you can provide. 

Và đây là sản phẩm ghi trên máy tính dev khác sau cố gắng mở bảng phân cảnh trong dự án khác mà chúng tôi nhận được lỗi tương tự trên (đây là bảng phân cảnh mở ra tốt trên máy tính của tôi):

Jun 5 17:20:13 other-dev-computer-host-name Xcode[157]: Exception raised while unarchiving document objects - *** -[__NSArrayM insertObject:atIndex:]: object cannot be nil 
Jun 5 17:20:13 other-dev-computer-host-name Xcode[157]: [MT] DVTAssertions: Warning in /SourceCache/IDEKit/IDEKit-2113/Framework/Classes/Editor/IDEEditorDocument.m:1364 
    Details: Message sent to invalidated IBStoryboardDocument instance <IBStoryboardDocument: 0x409ec3340>. Backtrace for invalidation: 
     0 0x000000010d746f86 -[IDEEditorDocument _invalidate] (in IDEKit) 
     1 0x000000010d7b5291 -[IDEEditorDocument initForURL:withContentsOfURL:ofType:error:] (in IDEKit) 
     2 0x00000001102755d0 -[IBDocument initForURL:withContentsOfURL:ofType:error:] (in IDEInterfaceBuilderKit) 
     3 0x000000010d7b4efd +[IDEDocumentController _newEditorDocumentWithClass:forURL:withContentsOfURL:ofType:extension:error:] (in IDEKit) 
     4 0x000000010d7b4dba -[IDEEditorContext _newEditorDocumentWithClass:forURL:withContentsOfURL:ofType:extension:error:] (in IDEKit) 
     5 0x000000010d7b490c -[IDEEditorContext _openNavigableItem:withContentsOfURL:documentExtension:shouldInstallEditorBlock:] (in IDEKit) 
     6 0x000000010d7d9c96 -[IDEEditorContext _openNavigableItem:withContentsOfURL:shouldInstallEditorBlock:] (in IDEKit) 
     7 0x000000010d8c3667 -[IDEEditorContext _notifyDelegateAndOpenNavigableItem:withContentsURL:documentExtensionIdentifier:locationToSelect:annotationRepresentedObject:stateDictionary:annotationWantsIndicatorAnimation:exploreAnnotationRepresentedObject:highlightSelection:] (in IDEKit) 
     8 0x000000010d7f1e7b -[IDEEditorContext _notifyDelegateAndOpenEditorOpenSpecifier:updateHistory:] (in IDEKit) 
     9 0x000000010d7f199c -[IDEEditorContext _openEditorOpenSpecifier:updateHistory:] (in IDEKit) 
    10 0x000000010d7f18ba -[IDEEditorContext openEditorOpenSpecifier:] (in IDEKit) 
    11 0x000000010d7f189f -[IDEEditorModeViewController openEditorOpenSpecifier:editorContext:] (in IDEKit) 
    12 0x000000010d7f176e -[IDEEditorArea _openEditorOpenSpecifier:editorContext:takeFocus:] (in IDEKit) 
    13 0x000000010d8d5174 __108+[IDEEditorCoordinator _doOpenEditorOpenSpecifier:forWorkspaceTabController:editorContext:target:takeFocus:]_block_invoke (in IDEKit) 
    14 0x000000010d7f16cc +[IDEEditorCoordinator _doOpenWithWorkspaceTabController:editorContext:target:allowFallback:documentURL:usingBlock:] (in IDEKit) 
    15 0x000000010d7f112d +[IDEEditorCoordinator _doOpenEditorOpenSpecifier:forWorkspaceTabController:editorContext:target:takeFocus:] (in IDEKit) 
    16 0x000000010d7f0d45 -[_IDEOpenRequest _runIfNecessary] (in IDEKit) 
    17 0x00007fff98955395 __NSFireDelayedPerform (in Foundation) 
    18 0x00007fff909bd804 __CFRUNLOOP_IS_CALLING_OUT_TO_A_TIMER_CALLBACK_FUNCTION__ (in CoreFoundation) 
    19 0x00007fff909bd31d __CFRunLoopDoTimer (in CoreFoundation) 
    20 0x00007fff909a2ad9 __CFRunLoopRun (in CoreFoundation) 
    21 0x00007fff909a20e2 CFRunLoopRunSpecific (in CoreFoundation) 
    22 0x00007fff92e5eeb4 RunCurrentEventLoopInMode (in HIToolbox) 
    23 0x00007fff92e5ec52 ReceiveNextEventCommon (in HIToolbox) 
    24 0x00007fff92e5eae3 BlockUntilNextEventMatchingListInMode (in HIToolbox) 
    25 0x00007fff96036563 _DPSNextEvent (in AppKit) 
    26 0x00007fff96035e22 -[NSApplication nextEventMatchingMask:untilDate:inMode:dequeue:] (in AppKit) 
    27 0x00007fff9602d1d3 -[NSApplication run] (in AppKit) 
    28 0x00007fff95fd1c06 NSApplicationMain (in AppKit) 
    29 0x000000010caf9b6f (in Xcode) 
    30 0x000000010caf9b00 (in Xcode) 
    31 0x0000000000000002 

Object: <IBStoryboardDocument: 0x409ec3340> 
Method: -updateChangeCount: 
Thread: <NSThread: 0x40030a1a0>{name = (null), num = 1} 
Please file a bug at http://bugreport.apple.com with this warning message and any useful information you can provide. 

Cả hai đầu ra nhật ký đều rất giống nhau. Có một dòng bổ sung trong ngăn xếp cuộc gọi của đầu ra thứ 2 tại dòng 6: [IDEEditorContext _openNavigableItem:withContentsOfURL:shouldInstallEditorBlock:] (in IDEKit). Và dòng 11 (10 ngày 1) tham chiếu phương thức IDEEditorModeViewController thay vì IDEEditorGeniusMode. Nếu không, kết quả đầu ra của nhật ký sẽ giống hệt nhau.

Lưu ý, bảng phân cảnh thứ 2 mà chúng tôi nhận được lỗi này ban đầu sẽ không gặp sự cố với các xung đột hợp nhất Git vì tôi là nhà phát triển duy nhất đã làm việc trên bảng phân cảnh này. Tôi chưa bao giờ cần hợp nhất các cam kết vào kho lưu trữ này vì tôi là nhà phát triển duy nhất đóng góp vào nó.

+0

Bạn có thể kiểm tra phiên bản trước của bảng phân cảnh và mở phiên bản thành công bằng cùng một cài đặt Xcode trên cùng một máy tính không? –

+0

có thể trùng lặp với lỗi [com.apple.InterfaceBuilder -1. Bảng phân cảnh không thể mở được] (http://stackoverflow.com/questions/17495793/com-apple-interfacebuilder-error-1-storyboard-can-not-be-opened) – Laszlo

Trả lời

5

Dự án có sử dụng bất kỳ phông chữ tùy chỉnh nào không?

Tôi đã dành cả ngày để xử lý cùng một vấn đề chính xác (đã thử nhiều máy tính với nhiều phiên bản XCode) và ngay sau khi tôi cài đặt hai phông chữ tùy chỉnh mà chúng tôi có trong dự án mà Bảng phân cảnh có thể mở.

Tôi đã nhận được kết hợp cả ngoại lệ "không hợp lệ" cũng như ngoại lệ mảng. Và ngoại lệ mảng đã dẫn một nhà phát triển đồng nghiệp đến một số similar StackOverflow question nơi anh ấy nhận ra chúng tôi có phông chữ tùy chỉnh.

+0

Cả hai dự án này đều sử dụng phông chữ tùy chỉnh. Đã một thời gian kể từ khi chúng tôi gặp phải lỗi này, nhưng nếu chúng tôi gặp lại lỗi này, tôi chắc chắn sẽ ghi nhớ điều này. Cảm ơn vì tiền hỗ trợ. –

+0

Tôi đã có thể xác nhận điều này khắc phục sự cố! Cảm ơn. –

+0

Nếu bạn không nhận thấy điều này cũng có nghĩa là phông chữ tùy chỉnh hỗ trợ trong bảng phân cảnh. Cuối cùng! – Kuba

2

Sự cố này đang được gây ra bằng cách hợp nhất các thay đổi của bảng phân cảnh khác. Định dạng bảng phân cảnh dựa trên XML. Khi bạn thực hiện thay đổi, những thay đổi này đang được lưu trong tệp dự án. Xcode dường như không xác định theo cách nó lưu cấu trúc của tệp này, mọi thứ có thể được sắp xếp khác nhau, các đối tượng có thể xuất hiện ở những vị trí khác nhau trong cấu trúc. Điều này không quan trọng khi bạn đang làm việc một mình, nhưng khi hai hoặc nhiều người thực hiện thay đổi đối với bảng phân cảnh, việc hợp nhất có thể rất xấu. Mặc dù git dường như có thể hợp nhất các tệp tin tốt, cấu trúc của tệp bị hỏng và bạn sẽ không thể mở bảng phân cảnh của mình.

Cam kết thay đổi của bạn đối với bảng phân cảnh sớm và đẩy. Allways kéo trước khi thực hiện thay đổi cho bảng phân cảnh. Không hợp nhất, chọn một phiên bản và tiếp tục.

Bạn có thể nên xử lý các tệp dự án xcode của mình dưới dạng tệp nhị phân trong kho lưu trữ git của bạn. Xem http://robots.thoughtbot.com/post/33796217972/xcode-and-git-bridging-the-gap để có thể đọc tốt về điều này.

Đối với trường hợp của bạn, bạn có thể phải kiểm tra phiên bản tốt của tệp dự án và xây dựng lại các thay đổi trong bảng phân cảnh từ đó.

+0

Làm thế nào điều này có thể giải thích cùng một lỗi này nhận được khi mở cùng một storyboard trên hai máy tính khác nhau, trên một máy tính hoạt động, người kia nhận được lỗi? Ngoài ra, làm thế nào tôi có thể thấy chính xác vị trí trong cấu trúc XML mà lỗi đang được ném ra? Tôi am hiểu về cách cấu trúc này hoạt động và trong khi nó luôn gây phiền nhiễu và chúng tôi cố gắng hết sức để tránh nó, đôi khi kết hợp các thay đổi trong bảng phân cảnh khi kéo là bắt buộc. Có một nơi nào đó Interface Builder ghi lại thông tin nhiều hơn, giống như dòng nó không thành công? –

+1

Bạn có chắc chắn cả hai dự án đều giống nhau trên cả hai máy tính? Ngoài ra, Xcode đăng nhập vào /var/log/system.log – Marcel

+0

Có, các dự án giống hệt nhau, được kéo mới nhất từ ​​cùng một kho lưu trữ. Chúng tôi đã thử nó nhiều lần kể từ lần đầu tiên chúng tôi nhận thấy lỗi một vài tháng trước đây. Mỗi lần chúng tôi hy vọng có thể nó sẽ bắt đầu làm việc với một bản cập nhật Xcode khác hoặc bất cứ thứ gì. Tôi đã tiếp tục có thể tự mình chỉnh sửa bảng phân cảnh. Nhưng khi các nhà phát triển khác cố gắng để mở nó trên máy tính của mình, anh ta nhận được cùng một lỗi. –

-1

Điều này làm việc cho tôi:

trong môi trường có lỗi xóa .storyboard (di chuyển vào thùng rác).

sao chép .storyboard từ môi trường hoạt động và gửi tệp (tệp riêng lẻ) đến môi trường không hoạt động (email, ổ USB, Skype, tuy nhiên).

kéo và thả .storyboard trở lại môi trường bị hỏng (sao chép và lưu)

cố định.

+0

^Phương thức này hoạt động. –

+0

mọi người có thể đã bỏ phiếu bình chọn này nhưng vẫn tiếp tục hoạt động. –

+0

Điều này cũng phù hợp với tôi. Cảm ơn. – Maxim

24

Vì trạng thái Marcel: điều này đôi khi xảy ra khi hợp nhất. Nhưng câu trả lời của anh ta không chỉ ra bất cứ điều gì cụ thể, vì vậy hãy để tôi gợi ý những gì chúng ta phải đối phó với một vài lần. Chúng tôi đã có một số bảng phân cảnh không đọc được sau khi hợp nhất trên một tệp đã được thay đổi cục bộ.

Chúng ta có thể khắc phục chúng bằng cách mở các kịch bản trong chế độ văn bản và kiểm tra tất cả các segue reference vào cuối của tập tin kịch bản:

<inferredMetricsTieBreakers> 
    <segue reference="gJw-Ph-JeV"/> 
    <segue reference="Olp-GN-hLL"/> 
    <segue reference="aFq-vB-ngK"/> 
</inferredMetricsTieBreakers> 

Tìm kiếm các kịch bản cho các giá trị niêm yết. Nếu bạn không thể tìm thấy kết quả phù hợp thứ hai cho chuỗi này, hãy nhận xét dòng này với <!-- -->. Sau khi xóa tất cả các tham chiếu segue không hợp lệ, Xcode đã có thể mở lại bảng phân cảnh.

+0

đây là vấn đề trong trường hợp của tôi. –

+0

kiểm tra xem mọi đoạn văn bản như "DPH-X9-4b0" có thể đạt được nhiều hơn một lần không – WINSergey

+0

Bạn đã lưu ngày của tôi! Cảm ơn bạn đã gợi ý! Đó chính xác là những gì đã xảy ra với tôi. – mginius