2012-04-01 2 views
2


мне нужно использовать 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).' 

После многих Я полагаю, что я не могу поместить ключ-путь (имя) в правую часть выражения предиката.
Правильно?
Существует обходное решение для получения того, что мне нужно в этом конкретном случае?

ответ

0

Это будет работать только с массивами и наборами. Core Data не поддерживает этот тип предиката.

Вы пробовали использовать [предикат NSPredicateWithBlock:]?

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; 
}]; 
+0

Я не могу, потому что я использую предикат в запросе SQLite. – simone

Смежные вопросы