我有以下扩展方法来搜索数组:
- (NSArray *)searchItemsForTerm:(NSString *)term;
{
NSPredicate *resultPredicate = [NSPredicate predicateWithFormat:@"name contains[c] %@", term];
return [[self filteredArrayUsingPredicate:resultPredicate] copy];
}
有时,阵列中的所有对象都没有" name"属性。在这种情况下,我得到一个例外。 有没有办法创建这个谓词,可以忽略任何不存在的属性?
谢谢!
答案 0 :(得分:2)
类似的东西:
- (NSArray *)searchItemsForTerm:(NSString *)term;
{
NSPredicate *resultPredicate = [NSPredicate predicateWithFormat:@"name contains[c] %@", term];
NSArray *filteredArray = [self filteredArrayUsingPredicate:[NSPredicate predicateWithBlock:^BOOL(id evaluatedObject, NSDictionary *bindings) {
if ([evaluatedObject respondsToSelector:@selector(name)]) {
return [resultPredicate evaluateWithObject:evaluatedObject];
}
return NO;
}]];
return filteredArray;
}