迭代通过数组比较字典值

时间:2013-07-05 14:41:22

标签: macos cocoa

我有一个包含NSDictionaries的NSMutableArray * dataArray。我想迭代数组,以便在searchString与其中一个字典值匹配时,使用第一个数组中的对象创建一个新的NSMutableArray * tempDataArray。

这是我的代码:

self.tempDataArray = [[NSMutableArray alloc] init];

for (int i = 0; i < kDelegate.dataArray.count; i++) {

    NSDictionary *dict = [kDelegate.dataArray objectAtIndex:i];

    for (int j = 0; j < [dict allValues].count ; j++) {

        if ([[[[dict allValues] objectAtIndex:j]stringValue] isEqualToString:searchString]) {

            [self.tempDataArray addObject:dict];
        }
    }

}

现在这不起作用,因为字典还包含NSDate。至少这是我从错误信息中读到的内容:

-[__NSTaggedDate stringValue]: unrecognized selector sent to instance 0x41b7809e2600000d

我不明白,因为我确实将所有值声明为stringValue。

这是我问题的第一部分。下半部分是这只搜索完全匹配但我宁愿搜索确定字典值是否包含子字符串。

无论如何,谢谢你的帮助!

1 个答案:

答案 0 :(得分:1)

(未测试):

self.tempDataArray = [[NSMutableArray alloc] init];

for (NSUInteger i = 0; i < kDelegate.dataArray.count; i++) {

    NSDictionary *dict = [kDelegate.dataArray objectAtIndex:i];
    NSArray *allValues = [dict allValues];

    for (NSUInteger j = 0; j < allValues.count; j++) {
        NSObject *obj = [allValues objectAtIndex:j];
        if ([obj isKindOfClass:[NSString class]]) {
            NSRange range = [(NSString *)obj rangeOfString:searchString];
            if (range.location != NSNotFound) {
                [self.tempDataArray addObject:dict];
            }
        }
    }
}