2015-04-09 7 views
20

Bei der Kompilierung mit Xcode 6.3 (iOS 8.3 SDK) werden unter bestimmten Umständen einige NIB-Dateinamen mit einem zusätzlichen ~ipad oder ~iphone enden. Zum Beispiel wird ViewController~ipad.xibViewController~ipad~ipad.nib. Dies führt zu einem Absturz, da die App nicht erwartet, dass die kompilierten NIB-Dateien das doppelte Suffix haben.Xcode 6.3: NIB konnte im Bundle nicht geladen werden

+1

Ich würde annehmen, dass dies das gewünschte Verhalten ist. Wenn Sie Größenklassen verwenden, warum sollten Sie Ihre XIB-Dateien mit dem Suffix '~ (iphone | ipad) .xib' ausrichten? – Camsoft

+0

Richtig - wir wollten unsere XIB-Dateien auf bestimmte Gerätetypen ausrichten. Vor der Veröffentlichung von Xcode 6.3 verursachte das Aktivieren von Größenklassen in diesen Dateien keine Probleme. –

+0

Ich vermute, es war vielleicht ein Bug oder Designfehler in den vorherigen Versionen. – Camsoft

Antwort

39

Um dies zu beheben, deaktivieren Sie "Verwendung von Größenklassen" in allen betroffenen Dokumenten in Interface Builder.

Dies scheint ein Fehler in der Version von ibtool zu sein, die in Xcode 6.3 (und dem iOS 8.3 SDK) enthalten ist. Dies geschieht unter folgenden Umständen:

  • Sie haben eine gerätespezifische Eingabedatei *~(iphone|ipad).xib mit aktivierten Größenklassen.
  • Ihr Bereitstellungsziel ist älter als iOS 8.0.

Ich war in der Lage, das Problem auf der Kommandozeile zu reproduzieren:

xcrun --sdk iphonesimulator8.3 ibtool --minimum-deployment-target 7.0 --compile ViewController~ipad.nib ViewController~ipad.xib 

Wenn Sie das gleiche Verhalten sind zu sehen, bitte this radar duplizieren. Dies scheint in der neuesten Xcode 6.4 Beta behoben zu sein.

+0

Dateifehler? Jeder, der darauf trifft, würde sich über eine Radarnummer freuen. –

+0

Das einzige, was ich sagen würde, ist, dass wenn Sie Größenklassen deaktivieren, Sie Layouts für definierte Größenklassen verlieren, so dass diese Lösung wirklich nur funktioniert, wenn Sie nur die normale Größenklasse für iPhone und iPad verwenden. – Camsoft

+0

@ Camsoft das ist richtig. Wir wollten unsere xibs auf bestimmte Gerätetypen ausrichten und wollten keine Größenklassen aktivieren. Wir haben einfach nicht daran gedacht, es zu deaktivieren, weil es vor Xcode 6.3 nie ein Problem war. –

0

Dies scheint ein Fehler von Xcode 6.3 beim Kompilieren von XIB-Dateien zu sein. Um die Ausnahmen zu umgehen gibt es 4 Optionen:

  1. Ziel Projekt iOS 8
  2. Verwenden Storyboards statt XIB Dateien
  3. Disable Größenklassen
  4. Handle NIB Laden in Code

Ich habe jede dieser Optionen in meinem Blogpost beschrieben: http://www.joobik.com/2015/04/fixing-xcode-63-ios-sdk-error-could-not.html

2

Änderung ~ in _ in der XIB-Name und geben Sie explizit das Suffix beim programmgesteuerten Laden des Bundles an.

+0

Das war meine Problemumgehung zu – bdalziel

0

Ich hatte einige Dateien benannt mit ~ und ich habe sie umbenannt, aber es hat nicht geholfen, die Sache ist, dass ich keine XIB-Dateien habe, ich habe sogar versucht, meine Storyboards zu Größenklassen zu ändern.

Nichts hilft, habe ich Ziel iOS 7 gesetzt bauen, und ich brauche wirklich iOS zu unterstützen 7.

Ich weiß nicht, was NIB Laden Griff in Code bedeutet ...

Ein weiteres Mal das Problem ist, dass mein App im App Store begann die App in XCode 6.3 mit meinem iPad Air mit iOS 8.3 stürzt sofort mit dieser Nachricht zu einem Absturz auf iOS 8.3, und wenn versuchen, zu bauen:

*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Could not load NIB in bundle: ....

Danke für die Hilfe.

+0

Könnte es ein xib in einer Drittanbieterabhängigkeit sein? –

+0

Nein, es gibt keine solche Sache, es gibt mir die Kennung der Komponente im Storyboard, also sehe ich welche es ist aber ich habe alles versucht, nichts hat geklappt .. –

Verwandte Themen