从Dictionary plist中访问元素

时间:2009-06-04 02:16:10

标签: iphone dictionary

我正在尝试使用字典plist,如下所示: alt text

我把它读成临时词典就好了。

我想知道的是,如果有一种简单的方法来获取字符串子项(实际上是数组中的单个元素,正如您所看到的那样)。

我最初尝试过objectAtIndex,但当然是返回一个数组,而不是字符串值。我接下来尝试使用NSEnumerator(objectEnumerator),然后使用objectAtIndex:0来获取有效的字符串。

但我真的希望有更简单的方法来做到这一点。

编辑:澄清我正在尝试做什么。

我想使用键值(例如“All Items”)来填充tableview cell.text,然后使用字符串值(例如“find.png”)以帮助通过UIImage imageNamed填充cell.image: 。我不希望使用硬编码值(例如objectForKey:@“All Items”),这样我就可以更改plist中的数据而不需要更改代码。

3 个答案:

答案 0 :(得分:2)

您需要在字典上调用objectForKey:以获取其中一个数组,然后在数组上调用objectAtIndex:0(或只是lastObject)来获取字符串。您可以将这两个方法调用组合成一行代码,例如:

[[dictionary objectForKey:@"All Items"] lastObject];

答案 1 :(得分:0)

您可以使用字典的快速枚举:

for (id key in dict) {
    NSArray *array = [dict objectForKey:key];
    NSLog(@"key: %@, value: %@", key, [array objectAtIndex:0]);
}

答案 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];


This code will be helpful which use to get values from plist having following structure......

<?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>