NSP предикатная проблема - PullRequest
       1

NSP предикатная проблема

1 голос
/ 14 сентября 2011

Я пытаюсь найти массив объектов, используя NSPredicate. У объектов есть ряд свойств NSString, которые я хочу отфильтровать.

У меня есть следующий код для фильтрации:

NSString *predicateString = [NSString stringWithFormat:@"name like[c] %@",self.textFieldOutlet.text];
NSPredicate *searchPredicate = [NSPredicate predicateWithFormat:predicateString];
NSArray *results = [[MySingleton sharedMySingleton].cardArray filteredArrayUsingPredicate:searchPredicate];

Но я получаю следующую ошибку:

WebKit discarded an uncaught exception in the webView:shouldInsertText:replacingDOMRange:givenAction: delegate: <NSUnknownKeyException> [<CardObject 0x14a530> valueForUndefinedKey:]: this class is not key value coding-compliant for the key test.

Если я поставлю одинарные кавычки вокруг %@, это будет работать, но только в том случае, если введенный текст точно совпадает со значением, хранящимся в ключе имени, а не в том случае, если это значение «похоже». Таким образом, не очень полезно. Должно быть, я что-то не так делаю со строкой предиката, кто-нибудь может посоветовать?

Заранее спасибо!

Ответы [ 3 ]

0 голосов
/ 14 сентября 2011

В сообщении об ошибке указывается, что CardObjects не поддерживает свойство 'test' с KVO.

Однако ваш предикат просто просит сравнить свойство name, поэтому похоже, что этот предикат не является причиной сбоя веб-просмотра.

Можете ли вы добавить содержимое вашего метода webView:shouldInsertText:replacingDOMRange:givenAction: к вопросу, потому что именно там происходит ошибка.

Я думаю, что изменение предиката - это изменение потока кода позже в этом методе, и именно в этом и заключается ошибка (но без просмотра остальной части вашего кода, это немного догадка!)

0 голосов
/ 15 сентября 2011

Хорошо, я до сих пор не знаю, почему я получаю ошибку веб-просмотра для NSPredicate.Но я исправил проблему, используя следующую строку предиката:

(name like[cd] '*%@*')
0 голосов
/ 14 сентября 2011

Видимо, ошибка говорит о том, что ваш объект не соответствует значению ключа. Попробуйте использовать NSDictionary вместо

...