2010-12-10 7 views
1

Navigation habe ich eine .plist-Datei, die wie folgt aussieht: alt textmehrere verschachtelte Wörterbücher in plist Datei

und frage mich, wie ich über die Navigation durch die mehrere Wörterbücher gehen würde, oder wenn dies auch der beste Weg ist, zu setzen up die Plist-Datei.

Nicht alle Elemente im Wörterbuch werden die gleichen Jahre oder Größen haben, die mit ihnen verbunden sind, also bin ich nicht sicher, ob Arrays der Weg wäre, darauf zu gehen.

Antwort

2

Es gibt keine „beste Weg“ verwenden, dass jemand Ihnen sagen kann. Es hängt davon ab, was Sie tun und wie Sie das PLIST verwenden möchten.

Der Standard Weg zu tun, was Sie reden, besteht darin, durch alle Schlüssel in einer for...in Anweisung zu durchlaufen, ähnlich wie die Antwort von filipe. Wenn Sie den "Pfad" kennen, den Sie durchqueren möchten, können Sie auch NSDictionary [dict objectForKey:key] verwenden, um einen direkteren Zugriff zu erhalten, als alles durchzulaufen.

Es gibt keine Magie hier, denken Sie einfach an diese Art von Struktur wie ein ungeordneter Baum. Sie haben eine Liste von Elementen oder "Verzweigungen" und jedes Element kann selbst eine andere Verzweigung sein, mit einem "Blatt" - oder Wertknoten des ungeordneten Baumes am Ende eines gegebenen Durchquerungspfades.

Hoffe, dass einige hilft.

1

können Sie die keyEnumerator Eigenschaft verwenden, um alle Schlüssel im Wörterbuch zu gehen, oder Sie können einfach

for (NSString *key in myDict) 
{ 
    ... 
} 
0
NSArray *paths = NSSearchPathForDirectoriesInDomains (NSDocumentDirectory, NSUserDomainMask, YES); 
// get documents path 
NSString *documentsPath = [paths objectAtIndex:0]; 
// get the path to our Data/plist file 
NSString *plistPath = [documentsPath stringByAppendingPathComponent:@"DecisionName.plist"]; 
NSLog(@"Error in dictionary"); 
NSLog(@"HELLO"); 
NSMutableDictionary *plistDict = [[NSMutableDictionary alloc] initWithContentsOfFile:plistPath]; 

NSArray *testChoice = [[NSArray alloc] initWithArray:[plistDict objectForKey:selectedDecision]]; 
self.choices = [testChoice objectAtIndex:0]; 
self.preferences = [testChoice objectAtIndex:1]; 

Dieser Code wird hilfreich sein, die Verwendung zu erhalten Werte von plist mit folgenden Struktur ......

<?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>Toyota</string> 
     <string>Honda</string> 
    </array> 
    <array> 
     <string>Speed</string> 
     <string>Reliability</string> 
     <string>Price</string> 
    </array> 
</array> 
</plist> 
Verwandte Themen