我有以下NSArray:
(
{
establecimiento = 15;
internet = 500;
},
{
establecimiento = 0;
internet = 1024;
},
{
establecimiento = 24;
internet = 300;
}
)
我需要过滤establecimiento < 10
的数组。
我正在尝试这个:
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"establecimiento = %@", [NSNumber numberWithInt:self.establecimientoFiltro]];
其中self.establecimientoFiltro
是一个值为10的int
但我的结果是一个空数组。
希望能够清楚地回答我的问题,并提前感谢您的答案。
此致 维克多
答案 0 :(得分:1)
您的谓词会检查该值是否等于十,不小于十。您收到一个空数组,因为您提供给我们的数组不包含establecimiento
键返回值为10的字典。
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"establecimiento < 10"];
答案 1 :(得分:0)
您应该blocks
使用Predicate
来实现此目标。
我们假设您的数组位于myArray
。现在使用您选择的范围制作谓词。截至目前,您希望establecimientoFiltro
小于10。
NSPredicate *keyPred = [NSPredicate predicateWithBlock:^BOOL(id obj, NSDictionary *bindings) {
NSRange myRange = NSMakeRange (0, 9);
NSInteger rangeKey = [[obj valueForKey:@"establecimientoFiltro"]integerValue];
if (NSLocationInRange(rangeKey, myRange)) {
// found
return YES;
} else {
// not found
return NO;
}
}];
NSArray *filterArray = [myArray filteredArrayUsingPredicate:keyPred];
NSLog(@"%@", filterArray);
您可以在filteredArray
。
希望这是最有效的&amp;对你有帮助。