arrayWithContentsOfFile nicht Lesen kann plist-Datei
ich habe eine plist mit einem array mit 2 strings enthalten siehe Bild :
http://imageshack.us/photo/my-images/263/myplist.png/
und in meinem viewDidLoad
ich Folgendes hinzufügen :
NSString *file = [[NSBundle mainBundle] pathForResource:@"Data" ofType:@"plist"];
NSArray *array = [NSArray arrayWithContentsOfFile:file];
NSLog(@"array = %@", array);
Aber ich habe immer null
warum? Danke für die Hilfe.
UPDATE : die Lösung ist, dass Sie müssen manuell Bearbeiten Sie die plist-Datei (Xcode4 verwenden Dictionnary standardmäßig)
<?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">
<array>
<array>
<string>HO</string>
<string>HI</string>
</array>
</array>
</plist>
- poste deinen vollständigen code.
- Haben Sie überprüft, ob der Pfad existiert? Vielleicht kleben Sie eine
[[NSFileManager defaultManager] fileExistsAtPath:file]
dort? - Dies ist mein vollständiger code :).
- habe ich überprüft und der Pfad existiert.
- der name der root-Schlüssel Aus dem Array, UM Root, Es ist in Ordnung, die
- Ich habe ihn auf root aber funktioniert nicht!!
Du musst angemeldet sein, um einen Kommentar abzugeben.
Meisten wahrscheinlich, Ihre plist ist ein Wörterbuch, das ein array enthält (Xcode 4 nicht erlauben, plists mit einem array als root-Objekt). Probieren Sie etwas wie dieses:
in der Sie die Anwendung, die Sie brauchen, um zu ändern, die root-key-name, da kann es nicht sein, datatype
Habe ich untersucht worden zu diesem Thema und entdecken Sie einige Unterschiede in der plist-Datei.
Zum Beispiel , ich habe die original plist-Datei im sample-code, der gelesen wird, mit
die Methode
NSArray *array = [[NSArray alloc] initWithContentsOfFile:path];
den ursprünglichen xml-Datei ist :
Wenn ich versuchte, Sie zu erstellen, diese gleiche Datei oben im Xcode-Schnittstelle, mit Add neue Datei-Eigenschaft-Liste, und nach der Bearbeitung setzen der Sache die gleiche Weise ist zu zeigen-in-Schnittstelle für die Datei vor, die Methode
[[NSArray alloc] initWithContentsOfFile:path];
scheitern, und ich fand das Problem in der Struktur der xml-plist-Datei.Die Datei, die erstellt mit XCode Interface, das Ergebnis in xml-plist-Datei :
Ich behoben, die änderung direkt in der xml-Datei, wie gleich das erste Beispiel, und die Methode funktioniert gut.
Der Punkt ist in der XCode-Schnittstelle für plist-Datei, Sie kann nicht sehen, diese Unterschiede. Die beide gleich Aussehen. Vielleicht ist mein Xcode 4.1
Die richtige Antwort ist, das Wurzel-Element bereits in einem array (in XCode4.. nicht sicher über die anderen). So, wenn Sie ein array als neil d zeigte in seinem Screenshot, Sie werden am Ende mit einem array mit einem array mit zwei string-Werte.
plist
dieser Art:ODER (im Grunde ist beides das gleiche)
Gelesen werden kann, wie diese:
Wo
appFeatures
ist name derplist
.(iOS 6.1)