2013-10-28 25 views
23

Ho appena colpito un muro di mattoni con xCode non volendo analizzare il mio file Info.plist. Ho sostituito il file più volte con versioni precedenti (identiche) del file di cui avevo precedentemente eseguito il backup, e continuo a ricevere lo stesso errore.Xcode "Impossibile analizzare il contenuto di Info.plist"

Ecco il messaggio di errore completo:

couldn't parse contents of '/Users/...Info.plist': The data couldn’t be read because it isn’t in the correct format. 

Sono senza tracce su questo. Sto usando xCode 5.0.1, Mavericks

risposta

2

Sembra sostituire il file con un backup, quindi eliminare i dati derivati ​​per il progetto in Organizer era la cura. Spero che questo aiuti qualcun altro più tardi.

+0

Ho provato a sostituire il file plist, nonché il file di progetto e sto ancora ricevendo errori. ugh! – ganders

+0

Questo ha risolto anche il mio problema. – Tander

10

Un'altra causa di questo problema può essere il tentativo di inserire URL (in realtà solo barre, ecc.) Nell'app-Info.plist.

Avvicinati semplicemente alzando il flag -traditional all'interno dell'opzione Info.plist Other Preprocessor Flags nelle impostazioni di creazione del progetto.

enter image description here

+2

OMG che è SO OBSCURE, ma risolve il mio problema! Grazie!! Nel mio caso, ho un Sparkle SUFeedURL nel mio plist che a quanto pare ha causato il preprocessore a fare i conti. Dove hai trovato la documentazione per '-radizionale' ?? E cosa significa? – nevyn

1

Quando si costruisce per iOS, l'Info.plist potrebbe essere danneggiato quando orientamento di default è impostata su Auto rotazione. Il file Info.plist è creato correttamente sulla prima build, ma la successiva costruisce risultati in ...

<key>UIInterfaceOrientation</key> 
<string></string> 
</string> 

... a questo punto Xcode non riesce a costruire il progetto.

+0

Esiste una soluzione per questo oltre a eliminare il file e rigenerarlo? – Andrew

0

Stavo avendo lo stesso errore, e mi sono reso conto che avevo un URL (es. http://example.com/something) come valore nel mio Info.plist, e ho appena attivato la pre-elaborazione per esso (senza il flag -traditional) . Apparentemente Xcode tratterà il // come un marcatore di commento, e ometterà il resto della linea.

Un work-around che ho trovato è di abbracciare il pre-processore, in questo modo: http:/${}/example.com/something, che rompe il // mettendo una sottostazione stringa vuota a metà in modo da non sembrare un commento a Xcode, ma dopo la pre-elaborazione torna a un normale URL.

2

Ho rovinato il file personalmente quando si uniscono conflitti sollevati. .plist è un file XML e aggiunto conflitto git < < < < e >>>> lì per taggare le differenze.

Trova il file .plist nel Finder (in una delle cartelle del tuo progetto). Aprilo in un editor di testo, trova le linee che non sembrano XML appropriate, rimuovile e assicurati di rimuovere la linea/nodo XML duplicato (a causa di modifiche pre e post registrate).

45

Questo è uno dei modi migliori per rilevare su quale riga si è verificato l'errore.

Basta andare nella directory in cui il file plist è presente poi scrivere questo comando su Terminal->

plutil filename.plist 
+3

So che SO è stanco di gratitudine, ma questo piccolo consiglio ha reso la mia giornata! Avrei trovato gli indicatori di fusione con un editor di testo alla fine, ma l'utilità mi ha indicato esattamente! Grazie! –

+0

Risposta perfetta. Ha eseguito il comando e mi ha dato il numero di riga. Attraverso xcode, tasto destro del mouse su plist, aperto come codice sorgente e andato alla linea. Si è scoperto che il numero del pacchetto era stato ripetuto 2 volte. Così ho rimosso uno. Pulito e costruito. Il progetto è stato eseguito con successo. – TharakaNirmana

+0

Questo è particolarmente utile in quanto il plist può essere valido xml ma comunque un plist valido – Lewis42

2

Penso di aver usato gli strumenti di controllo dell'origine, è possibile utilizzare strumenti di base di modifica del testo, senza Xcode per aprire questo plist, il comando + F per trovare "< < < < <" o ">>>>>", allora si avrà probabilmente trovare stringa di errore come ad esempio:

<<<<<<< .mine 

>>>>>>> .r605 

selezionare la stringa corretta, e Canc e l'altro, l'errore è risoluzione!

-2

Stavo avendo lo stesso errore, in base al modo @Vizllx, errore ancora. Quindi uso Sublime Text per aprire info.plist, ho scoperto che il codice è in conflitto.

Problemi correlati