NSP предикат с траекторией ключей на правой стороне - PullRequest
2 голосов
/ 01 апреля 2012


Мне нужно использовать 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 голосов
/ 03 апреля 2012

Это будет работать только с массивами и наборами. Базовые данные не поддерживают этот тип предиката.

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

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;
}];
...