2015-04-09 35 views
20

Quando compilato utilizzando Xcode 6.3 (iOS 8.3 SDK), alcuni nomi di pennino terminano con un extra ~ipad o ~iphone in determinate circostanze. Ad esempio, ViewController~ipad.xib diventa ViewController~ipad~ipad.nib. Ciò sta causando un arresto anomalo perché l'app non si aspetta che i file di pennini compilati abbiano il doppio suffisso.Xcode 6.3: Impossibile caricare NIB in bundle

+1

Direi che questo è il comportamento desiderato, se stai utilizzando Classi di dimensioni perché dovresti scegliere come target i tuoi file xib usando il suffisso '~ (iphone | ipad) .xib'? – Camsoft

+0

Giusto: intendevamo scegliere come target i nostri file xib su tipi di dispositivi specifici. Prima del rilascio di Xcode 6.3, avere classi di dimensione abilitate in questi file non causava alcun problema. –

+0

Sospetto che sia stato un errore o un difetto di progettazione nelle versioni precedenti. – Camsoft

risposta

39

Per risolvere questo problema, deselezionare "Utilizza classi di dimensione" in qualsiasi documento interessato in Interface Builder.

Questo sembra essere un bug nella versione di ibtool inclusa con Xcode 6.3 (e iOS 8.3 SDK). Si verifica nelle seguenti circostanze:

  • Si dispone di un file di input specifico per dispositivo *~(iphone|ipad).xib con classi di dimensioni abilitate.
  • L'obiettivo di distribuzione è qualcosa di più vecchio di iOS 8.0.

sono stato in grado di riprodurre il problema sulla linea di comando:

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

Se stai vedendo lo stesso comportamento, si prega di duplicare this radar. Questo sembra essere stato risolto nell'ultima versione di Xcode 6.4 beta.

+0

Errore di file? Chiunque lo incontri apprezzerebbe un numero radar. –

+0

L'unica cosa che vorrei dire è che se si disabilitano le classi di dimensioni si perderanno i layout per classi di dimensioni definite, quindi questa soluzione funziona davvero solo se si utilizza solo la classe di dimensione normale per iPhone e iPad. – Camsoft

+0

@Camsoft corretto. Volevamo indirizzare i nostri xib a tipi di dispositivi specifici e non volevamo abilitare le classi di dimensioni. Semplicemente non pensavamo di disabilitarlo perché non era mai stato un problema prima di Xcode 6.3. –

0

Questo sembra essere un bug di Xcode 6.3 durante la compilazione di file XIB. Al fine di aggirare le eccezioni ci sono 4 opzioni:

  1. target il progetto per iOS 8
  2. Uso storyboard, invece di file XIB
  3. Disattiva classi dimensionali
  4. Maniglia NIB carico nel codice

Ho dettagliato ciascuna di queste opzioni nel mio post del blog: http://www.joobik.com/2015/04/fixing-xcode-63-ios-sdk-error-could-not.html

2

cambia ~ in _ in il nome xib e specificare esplicitamente il suffisso durante il caricamento del pacchetto a livello di codice.

+0

Anche questo era il mio workaround – bdalziel

0

Ho avuto alcuni file con nome ~ e li ho rinominati, ma non ha aiutato, il fatto è che non ho file XIB, ho anche provato a cambiare i miei storyboard in classi di dimensioni.

Nulla sta aiutando, devo costruire obiettivo fissato a iOS 7 e ho davvero bisogno di supportare iOS 7.

Non so che cosa si occupano NIB carico in codice indica ...

Ancora una volta , il problema è che la mia app in AppStore ha iniziato a mandare in crash su iOS 8.3, e se provare a costruire l'App in XCode 6.3 usando il mio iPad Air con iOS 8.3 si blocca subito con questo messaggio:

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

Grazie per l'aiuto.

+0

Potrebbe essere un xib in una dipendenza di terze parti? –

+0

No, non esiste una cosa del genere, mi dà l'identificatore del componente nello storyboard, quindi vedo qual è, ma ho provato tutto, non ha funzionato. –

Problemi correlati