NSDictionary - 如何将Key作为字符串返回

时间:2011-11-28 06:32:05

标签: iphone objective-c ios nsdictionary

我有一个像这样的plist:

<dict>
<key>New item</key>
<dict>
    <key>document</key>
    <string>driving licence</string>
    <key>Overview</key>
    <string>a driving licence is required.......</string>
</dict>

如果我想获得对象,我会写这样的东西:

 myString = [somedictionary objectForKey:@"Overview"];

如果我想从我的plist获得“概述”怎么办? 我希望它很清楚.....请不要投反对票....我还在学习!; - )

编辑版本:

最好更具体:

我有这个代码

 for (NSDictionary *playDictionary in playDictionariesArray) {
        Play *play = [[Play alloc] init];
        play.name = [playDictionary objectForKey:@"playName"];

这是Apple示例代码: http://developer.apple.com/library/ios/#samplecode/TableViewUpdates/Introduction/Intro.html

在此示例中,字符串播放在标题部分返回播放的名称,但我想要 修改它并在标题中获取“Key”(在这种情况下将是“PlayName”。

感谢每一个人:这就是我如何修复它:

 NSMutableArray *anArray = [[NSMutableArray alloc] init];
    [anArray addObject:@"Overview"];
    [anArray addObject:@"pre-requirements"];
    [anArray addObject:@"where"];
    [anArray addObject:@"what"];


    //Use a for each loop to iterate through the array
    for (NSString *s in anArray) {

            Play *play = [[Play alloc] init];
            play.name = s;

3 个答案:

答案 0 :(得分:17)

您可以使用[dict allKeys]获取字典中所有键的数组。您可以使用[dict allKeysForObject:object]获取其值为特定对象的所有键的数组。您可以在循环中逐个处理密钥,如下所示:

for (NSString *key in dict) {
    ...
}

答案 1 :(得分:3)

尝试这个,如果有效,请告诉我..

NSMutableArray* result = [NSMutableArray array];
for (NSString* key in dictionary) {

    [result addObject:key];
    // write to a dictionary instead of an array
    // if you want to keep the keys too.

}
return result;

答案 2 :(得分:0)

如果您想要获取给定对象的密钥,可以尝试以下方法:

- (NSArray *)allKeysForObject:(id)anObject

像这样使用它:

myString = [[myDict allKeysForObject:@"a driving licence is required......."] objectAtIndex:0];

注意它返回一个NSArray,因为你可以为指定的对象提供多个键。