1

我有一个包含 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。

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

无论如何,感谢您的所有帮助!

4

1 回答 1

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];
            }
        }
    }
}
于 2013-07-05T14:52:21.660 回答