【问题标题】:NSPredicate for multiple objects and propertiesNSPredicate 用于多个对象和属性
【发布时间】:2015-05-21 17:14:15
【问题描述】:

我有以下扩展方法在数组中搜索:

- (NSArray *)searchItemsForTerm:(NSString *)term;
{
    NSPredicate *resultPredicate = [NSPredicate predicateWithFormat:@"name contains[c] %@", term];
    return [[self filteredArrayUsingPredicate:resultPredicate] copy];
}

有时并非数组中的所有对象都具有“名称”属性。在这种情况下,我得到一个例外。 有没有办法创建这个可以忽略任何不存在的属性的谓词?

谢谢!

【问题讨论】:

标签: ios objective-c cocoa


【解决方案1】:

类似:

- (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;
}

【讨论】:

    猜你喜欢
    • 2013-12-12
    • 1970-01-01
    • 2014-06-14
    • 2017-09-20
    • 1970-01-01
    • 2022-01-10
    • 2020-06-14
    • 2013-04-08
    • 2010-12-30
    相关资源
    最近更新 更多