NSPredicate for Dictionaries

时间:2014-01-18 07:16:15

标签: ios objective-c xcode nspredicate

我有一个

Array
  Item 0 -- Dictionary
    Sport -- String
    Mens  -- Array
      Item 0 -- Dictionary
        Name -- String
        Rules -- String
        Description -- String
    Womens  -- Array
      Item 0 -- Dictionary
        Name -- String
        Rules -- String
        Description -- String
   Item 1 -- Dictionary
      And so on.....

我想创建一个NSPredicate来搜索Name中是否包含给定的字符串。我怎样才能达到那么深的目标?

如果你无法理解图表。我有一个充满字典的数组,里面的字典是一个字符串,一个字典数组和一个字典数组,里面的字典是字符串对象

那么如何进入第二个词典并搜索名称密钥

提前致谢

2 个答案:

答案 0 :(得分:22)

您需要以下

NSString *str = <search string>;
NSPredicate *pred = [NSPredicate predicateWithFormat:@"ANY Mens.Name LIKE %@ OR ANY Womens.Name LIKE %@", str, str];
NSArray *result = [your_array filteredArrayUsingPredicate:pred];
BOOL success = result.count > 0;

答案 1 :(得分:-7)

要获得名称,您必须这样做:

for (NSDictionary *itemDict in myArray)
{
    NSArray *womensArray = (NSArray*)[itemDict objectForKey:@"Womens"];

    for (NSDictionary *womenItemDict in womensArray)
    {
          NSString *name = [womenItemDict objectForKey:@"Name"];

          //Do the comparison here
    }
}