如何在nsdictionary中使用谓词?

时间:2014-07-01 00:04:21

标签: objective-c plist uisearchbar predicate

我的plist中的另一个字典中有一个字典,如下所示:

    <dict1>Root
         <dict2>A
             <dict3>Apple
                   <string>"About Apple..."
             <dict3>Arrow
                   <string>"About Arrow..."
         <dict2>B
             <dict3>Ball
                   <string>"About Ball..."
         <dict2>C

                     etc...

用户当前正在使用搜索栏搜索字符串。如何查看第三级并使用谓词比较每个字符串并返回结果并将这些传递给表视图单元格?

我尝试过关注此视频教程,但我在谓词上失败了。

https://www.youtube.com/watch?v=UE4h_Td6W6U

他从我能看到的内容中将他的字典写成阵列。我似乎有点复杂。

我是新手,所以任何帮助都将受到赞赏。

1 个答案:

答案 0 :(得分:2)

您需要遍历字典列表,直到找到您正在寻找的字典。它看起来像这样:

    NSString *plistPath = [[NSBundle mainBundle] pathForResource:@"YOURPLIST" ofType:@"plist"];
    NSMutableDictionary *dictionary = [NSDictionary dictionaryWithContentsOfFile:plistPath]; //This puts you into the root directory
    NSMutableDictionary *secondLevel = [NSMutableDictionary dictionaryWithDictionary:[dictionary objectForKey:[NSString stringWithFormat:@"A"]]]; //or B or C etc
    NSMutableDictionary *thirdLevel = [NSMutableDictionary dictionaryWithDictionary:[dictionary objectForKey:[NSString stringWithFormat:@"Apple"]]]; 

这将使您进入Apple字典,但是为了能够获取您需要附加密钥的字符串。你的字典看起来应该是

    <key>Some key name</key>
    <string>About Apple...</string>

然后你可以使用密钥来获取字符串:

    NSString *string = [thirdLevel objectForKey:@"Some key name"];

如果您严格搜索字符串,可以执行以下操作Search String in NSDictionary store in NSMutableArray