NSPredicate右侧有keypath

时间:2012-04-01 11:45:17

标签: objective-c ios xcode core-data nspredicate


我需要使用像这样的NSPredicate:

NSString *authorNameAndLastName = @"Name LastName";
[NSPredicate predicateWithFormat:@"%@ beginswith[cd] %K",authorNameAndLastName,@"name"]

但它不起作用,我收到了这个例外:

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'unimplemented SQL generation for predicate ("Name LastName" BEGINSWITH[cd] name).'

经过大量尝试后,我想我不能在谓词表达式的右侧放置一个键路径(名称)。
这是对的吗? 在这种特定情况下,有一种解决方法可以获得我需要的东西吗?

1 个答案:

答案 0 :(得分:0)

这仅适用于数组和集合。核心数据不支持这种类型的谓词。

您是否尝试过使用[NSPredicate predicateWithBlock:]?

NSPredicate *predicate = [NSPredicate predicateWithBlock:^BOOL(YourObject *object, NSDictionary *bindings) {

    NSComparisonResult result = [authorNameAndLastName object.name options:(NSCaseInsensitiveSearch|NSDiacriticInsensitiveSearch) range:NSMakeRange(0, [object.name length])];
    if (result == NSOrderedSame) {
        return YES;
    }

    return NO;
}];