2012-01-23 5 views
18

Sto localizzando un'app, seguendo i passaggi elencati here. L'ho raggiunto con successo con circa 45.xib, mentre solo 4 di questi mi danno questo errore:Interface Builder non può aprire il documento ".xib" perché non esiste

"Interface Builder non può aprire il documento" .xib "perché non esiste."

quando li spostamento dalla posizione originale. Provo a spostarli dalla loro posizione Project/Classes/Example.xib a quella localizzata su Project/it.lproj/Example.xib.

Perché questo file .xib non può essere spostato?

+2

li hai spostati usando XCode? o usando il Finder? farlo in XCode non dovrebbe produrre alcun errore. Sembra che tu l'abbia fatto con Finder, per localizzare i tuoi file NIB, selezionarli nel progetto, poi nella vista Utilità> File Inspector scegli '+' nella sezione Localizzazioni. –

+0

Va bene! Ha funzionato per quasi tutti. Ma ce n'è ancora uno che non funziona. Non riesco a capire perché. Seleziono semplicemente .xib, apro File Inspector, aggiungo localizzazione inglese con il pulsante "+" e compilo. Lo stesso errore si apre .... – MrSueko

risposta

5

Sto riscontrando un problema con Xcode 5 che potrebbe essere lo stesso problema. ibtools funziona in modo casuale durante la generazione o la scrittura di stringhe localizzate su/da file xib. Ho dovuto usare sudo su alcuni file xib per farlo funzionare. Ecco un esempio:

$ibtool --generate-strings-file en.lproj/MyVC.strings en.lproj/MyVC.xib 
<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"  
"http://www.apple.com/DTDs/PropertyList-1.0.dtd"> 
<plist version="1.0"> 
<dict> 
<key>com.apple.ibtool.errors</key> 
<array> 
    <dict> 
     <key>description</key> 
     <string>Interface Builder could not open the document "MyVC.xib" because it does not exist.</string> 
    </dict> 
</array> 
</dict> 
</plist> 

Utilizzando opere sudo anche se lamenta 'domini utente saranno volatili'

$sudo ibtool --generate-strings-file en.lproj/MyVC.strings en.lproj/MyVC.xib 
2013-10-01 10:04:35.943 Interface Builder Cocoa Touch Tool[1717:303] CFPreferences: user  
home directory at file:///var/root/Library/Application%20Support/iPhone%20Simulator/User/ is unavailable. User domains will be volatile. 
$ 
4

Per me questo è accaduto dopo un'unione Git. Il file di progetto deve essere cambiato così tanto che ora fornisce tutti questi errori. Questi file di progetto sensibili ...

Quindi, comunque, quello che ho finito per fare è solo rimuovere i file dal progetto (inviando loro di cestino) e poi ri-aggiungendo al progetto con un git checkout other_branch path/to/file

Dopo questo, la costruzione del progetto non ha generato più questo errore.

  • Sembra funzionare bene anche se si rimuove solo il riferimento e quindi aggiungere nuovamente il file al progetto (non c'è bisogno di inviare nel Cestino)
  • Importante È necessario rimuovere tutti i file rossi da il tuo Build Phases - Compile Sources delle impostazioni del tuo target. Quelli sono file che XCode pensa siano ancora lì e pensa che dovrebbe ancora provare a compilare, ma quando non li trova, restituisce questo errore.
35

Per me funziona così:

  • selezionare target del progetto
  • rimuovere il file dalla scheda build phases in copy bundle resources
  • ri aggiungerlo alla build phases scheda
+0

Questo mi ha appena salvato ore di lavoro – ngoue

+0

La rimozione del file (file cancellato o file con il vecchio nome dopo aver rinominato un file) dalla scheda Fasi Build è la soluzione! Grazie! – septerr

+0

Thx, lavora per me –

12

Ho riscontrato lo stesso errore durante l'esecuzione di ibtools su file .xib in due diverse directory. Ha funzionato bene con i file nella prima directory, ma non è riuscito sui file nella seconda directory. Se ho scambiato l'ordine di elaborazione delle directory, non è riuscito ancora per la seconda directory.

Infine ho scoperto che ibtool avvia un processo demone ibtoold che non termina quando ibtool termina, e se ho ucciso quel processo non ho più avuto l'errore. Apparentemente il demone ha uno stato che impedisce a ibtool di funzionare in un'altra directory.

Ho usato pkill ibtoold per uccidere il demone.

+3

'killall -9 ibtoold' ha funzionato meglio per me. Checkout utile [script] (https://github.com/ole/Storyboard-Strings-Extraction) e [article] (http://oleb.net/blog/2013/02/automating-strings-extraction-from-storyboards -per-localizzazione /). – DanSkeel

Problemi correlati