2013-06-05 4 views
8

Nachdem mehrere Entwickler am Storyboard in einer unserer Apps gearbeitet haben, erhalten wir nun diesen Fehler, wenn wir versuchen, das Storyboard im Xcode Interface Builder zu öffnen:Storyboard kann nicht geöffnet werden (com.apple.InterfaceBuilder Fehler -1.)

Das Dokument "MainStoryboard_iPhone.storyboard" konnte nicht geöffnet werden. Der Vorgang konnte nicht abgeschlossen werden. (com.apple.InterfaceBuilder Fehler -1.)

Überprüfen Sie das Konsolenprotokoll für zusätzliche Informationen.

Wir haben alle die neueste Version von Xcode (4.6.2 4H1003) und alle Änderungen wurden im Interface Builder an das Storyboard vorgenommen. Im Konsolenprotokoll werden keine weiteren Informationen angezeigt. Ich nehme an, der Fehler bezieht sich auf das gleiche Konsolenprotokoll, in dem Protokoll- und Debug-Anweisungen angezeigt werden, die vollständig leer sind.

Einer der Entwickler erhält denselben Fehler, wenn er versucht, das Storyboard in einer anderen unserer Apps zu öffnen, an der ich gerade gearbeitet habe. Dieses Storyboard öffnet sich für mich in Xcode auf meinem Computer, so dass wir uns nie mehr mit dem Fehler beschäftigt haben (dieser Fehler trat erst vor ein paar Monaten auf). Aber diesmal haben wir alle den gleichen Fehler (4 von uns haben es auf unseren eigenen Computern getestet).

Wir verwenden GitHub, um unsere Quellcodeverwaltung in beiden Projekten zu verwalten, indem wir ein paar verschiedene Git-Clients verwenden. Irgendwelche Ideen, was diesen Fehler verursacht und wie man ihn beheben kann?

UPDATE: Dies ist die Ausgabe auf meinem Computer /var/logs/system.log nach dem Versuch, das Storyboard zu öffnen:

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. 

Und das ist die Log-Ausgabe auf dem Computer des anderen dev nach versuchen, das Storyboard in dem anderen Projekt zu öffnen, dass wir diesen gleichen Fehler auf (dies ist das Drehbuch, das auf meinem Computer fein öffnet):

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. 

beiden Logausgaben sind sehr ähnlich. Im Callstack des 2. Ausgangs befindet sich eine weitere Zeile in Zeile 6: [IDEEditorContext _openNavigableItem:withContentsOfURL:shouldInstallEditorBlock:] (in IDEKit). Und Zeile 11 (10 am 1.) verweist auf die Methode IDEEditorModeViewController anstelle von IDEEditorGeniusMode. Ansonsten sind die Log-Ausgänge identisch.

Beachten Sie, dass dieses zweite Storyboard, mit dem wir diesen Fehler ursprünglich erhalten haben, kein Problem mit Git-Konflikten hatte, da ich der einzige Entwickler bin, der an diesem Storyboard gearbeitet hat. Ich habe nie Commits mit diesem Repository verschmelzen müssen, da ich der einzige Entwickler bin.

+0

Können Sie die vorherige Version des Storyboards auschecken und mit derselben Xcode-Installation auf denselben Computern erfolgreich öffnen? –

+0

mögliches Duplikat von [com.apple.InterfaceBuilder Fehler -1. Storyboard kann nicht geöffnet werden] (http://stackoverflow.com/questions/17495793/com-apple-interfacebuilder-error-1-storyboard-can-not-beopened) – Laszlo

Antwort

5

Verwendet das Projekt benutzerdefinierte Schriftarten?

Ich verbrachte den ganzen Tag damit, genau das gleiche Problem zu behandeln (mehrere Computer mit mehreren XCode-Versionen ausprobiert), und sofort nach der Installation der beiden benutzerdefinierten Schriftarten, die wir im Projekt hatten, konnten die Storyboards geöffnet werden.

Ich erhielt eine Mischung aus beiden "ungültig" Ausnahme sowie eine Array-Ausnahme. Und die Array-Exception führte einen Entwicklerkollegen zu einem similar StackOverflow question, wo er erkannte, dass wir benutzerdefinierte Schriftarten hatten.

+0

Beide Projekte würden benutzerdefinierte Schriftarten verwenden, ja. Es ist schon eine Weile her, seit wir diesen Fehler hatten, aber wenn wir es wieder sehen, werde ich mir das merken. Danke für den Tipp. –

+0

Ich konnte bestätigen, dass dies das Problem behebt! Vielen Dank. –

+0

Wenn Sie nicht bemerkt haben, bedeutet dies auch benutzerdefinierte Schriftarten Unterstützung im Storyboard. Endlich! – Kuba

2

Dieses Problem wird durch Zusammenführen der Storyboard-Änderungen verursacht. Das Storyboard-Format basiert auf XML. Wenn Sie Änderungen vornehmen, werden diese Änderungen in der Projektdatei gespeichert. Xcode scheint nicht-deterministisch zu sein, da es die Struktur dieser Datei speichert, Dinge können anders sortiert werden, Objekte können an verschiedenen Stellen in der Struktur erscheinen. Dies spielt keine Rolle, wenn Sie alleine arbeiten, aber wenn zwei oder mehr Personen Änderungen am Storyboard vornehmen, können Zusammenführungen sehr hässlich werden. Obwohl Git scheinbar in der Lage ist, die Dateien zusammenzuführen, wird die Struktur der Datei beschädigt und Sie können Ihre Storyboards nicht öffnen.

Verpflichten Sie Ihre Änderungen zu Storyboards früh und drücken Sie. Ziehen Sie immer, bevor Sie Änderungen am Storyboard vornehmen. Mischen Sie nicht, wählen Sie eine Version und fahren Sie fort.

Sie sind wahrscheinlich besser dran, Ihre xcode-Projektdateien als Binärdateien in Ihrem Git-Repository zu behandeln. Eine gute Lektüre hierzu finden Sie unter http://robots.thoughtbot.com/post/33796217972/xcode-and-git-bridging-the-gap.

Für Ihre Situation müssen Sie wahrscheinlich eine gute Version Ihrer Projektdatei auschecken und Ihre Änderungen im Storyboard von dort aus neu erstellen.

+0

Wie kann dies den gleichen Fehler, den ich bin, erklären beim Öffnen des gleichen Storyboards auf zwei verschiedenen Computern, auf einem funktioniert es, der andere erhält den Fehler? Wie kann ich genau sehen, wo in der XML-Struktur der Fehler geworfen wird? Ich weiß, wie diese Struktur funktioniert, und obwohl es immer nervig ist, tun wir unser Bestes, um es zu vermeiden. Manchmal werden Änderungen in Storyboards zusammengefügt, wenn das Ziehen erforderlich ist. Gibt es irgendwo einen Interface-Builder, der weitere Informationen protokolliert, wie die Zeile, auf der er fehlschlägt? –

+1

Sind Sie sicher, dass beide Projekte auf beiden Computern identisch sind? Auch Xcode meldet sich an /var/log/system.log – Marcel

+0

Ja, die Projekte sind identisch, zog die neueste aus dem gleichen Repository. Wir haben es mehrmals versucht, seit wir den Fehler vor ein paar Monaten zum ersten Mal bemerkt haben. Jedes Mal, wenn wir gehofft hatten, würde es vielleicht mit einem anderen Xcode-Update oder irgendetwas anfangen. Ich war weiterhin in der Lage, das Storyboard selbst zu bearbeiten. Wenn der andere Entwickler versucht, es auf seinem Computer zu öffnen, wird derselbe Fehler angezeigt. –

-1

Dieser arbeitete für mich:

in Umgebung mit Fehlern .storyboard Datei löschen (in dem Papierkorb verschieben).

kopieren Sie .Storyboard aus der Umgebung, die funktioniert und senden Sie es (Solo-Datei) an die Umgebung, die nicht funktioniert (E-Mail, USB-Stick, Skype, jedoch).

per Drag & Drop die .storyboard zurück in die gebrochene Umwelt (Kopie und speichern)

fixiert.

+0

^Diese Methode funktioniert. –

+0

Leute mögen diesen Fix gewählt haben, aber es funktioniert weiter. –

+0

Das hat auch für mich funktioniert. Vielen Dank. – Maxim

24

Wie Marcel besagt: Dies tritt manchmal bei einer Zusammenführung auf. Aber seine Antwort weist nicht auf etwas Bestimmtes hin, also lassen Sie mich einen Hinweis geben, mit dem wir uns einige Male befassen mussten. Wir hatten einige unlesbare Storyboards nach einer Zusammenführung einer Datei, die lokal geändert wurde.

Wir konnten sie beheben, indem Sie das Storyboard in Text-Modus zu öffnen und jeden segue reference am Ende der Storyboard-Datei überprüft: für die angegebenen Werte

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

das Storyboard Suche. Wenn Sie für diese Zeichenfolge keine zweite Übereinstimmung finden, geben Sie diese Zeile mit <!-- --> aus. Nach dem Entfernen aller ungültigen Segmentreferenzen konnte Xcode die Storyboards wieder öffnen.

+0

das war das Problem in meinem Fall. –

+0

überprüfen Sie, dass jedes Textstück wie "DPH-X9-4b0" mehr als einmal erreicht werden kann – WINSergey

+0

Sie haben meinen Tag gerettet! Danke für deinen Hinweis! Es ist genau das, was mir passiert ist. – mginius

Verwandte Themen