场景 =我需要遍历一个数组并查找有多少“未读”并计算向用户显示的数量。
我在寻找什么 = 喜欢这个(这不是我真正的代码)
for (NSDictionary *dic in self.objects) {
[unreadCountArray addObject:dic[@"wasRead"]];
for (YES in unreadCountArray) {
//statements
}
}
问题 =有没有人知道如何循环查找所有YES布尔值?
答案 0 :(得分:2)
如果您有一个字典数组,并且想要过滤它们,那么filteredArrayUsingPredicate:
是要使用的方法。
您可以使用字典中的键(predicateWithFormat:
)创建谓词。
然后,这将为您提供一系列与谓词中的条件匹配的词典。
没有示例代码,我在电话上回答这个问题。
答案 1 :(得分:2)
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"wasRead = YES"];
NSArray *arr = [array filteredArrayUsingPredicate:predicate];
可以在0.0004
秒内对一千个对象进行排序。
然后就这样做:
for (NSDictionary *object in arr) {
//Statements
}
编辑实际上经过进一步的实验后,使用快速枚举的速度大约是0.0001
的四倍,如果缩放到100000个对象可以更快,更快。
NSMutableArray *test = [NSMutableArray array];
for (NSDictionary *dict in array)
if ([dict[@"theKey"] boolValue])
[test addObject:dict];
因此,对于排序,快速枚举实际上更快,但对于几百个对象,性能提升可以忽略不计。
请在提出这样的问题并获得好评之前,通过查看文档可以完全避免这些问题。与this article和this article.
一样