NSPredicate问题

时间:2011-09-14 08:00:16

标签: iphone nspredicate

我正在尝试使用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 :(得分:0)

显然,错误表明您的对象不符合键值。 请尝试使用NSDictionary

答案 1 :(得分:0)

该错误表明您的CardObjects不支持使用KVO进行属性'test'。

但是,您的谓词只是要求比较name属性,因此看起来这个谓词不是您的webview崩溃的原因。

您可以将webView:shouldInsertText:replacingDOMRange:givenAction:方法的内容添加到问题中,因为这是发生错误的地方。

我认为更改谓词正在改变此方法后面的代码流,而这就是错误所在的位置(但是没有看到代码的其余部分,这有点猜测!)。

答案 2 :(得分:0)

好的,我仍然不知道为什么我的NSPredicate会出现webview错误。但我已使用以下谓词字符串修复了该问题:

(name like[cd] '*%@*')