我有一个.plist文件,如下所示:
并且想知道我将如何浏览多个词典,或者这是否是设置plist文件的最佳方式。
并非字典中的所有元素都具有与之相关的相同年份或大小,因此我不确定是否可以使用数组。
答案 0 :(得分:2)
没有人能告诉你的“最佳方式”。这取决于你正在做什么以及你想如何使用plist。
执行所讨论的内容的标准方法是迭代for...in
语句中的所有键,类似于filipe的答案。如果你知道你想要遍历的“路径”,你也可以使用NSDictionary的[dict objectForKey:key]
获得更多的直接访问,而不是遍历所有内容。
这里没有魔法,只想到这种结构就像一棵无序的树。你有一个项目列表或“分支”,每个项目本身可以是另一个分支,在给定的遍历路径的末尾有一个无序树的“叶子”或值节点。
希望有所帮助。
答案 1 :(得分:1)
您可以使用keyEnumerator
属性浏览字典中的所有键,或者只需使用
for (NSString *key in myDict)
{
...
}
答案 2 :(得分: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];
此代码将有助于从具有以下结构的plist中获取值......
<?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>