我正在尝试使用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.
如果我在%@
附近放置单引号,但只有输入的文本与为名称密钥保存的值完全相同,而不是如果它“喜欢”该值。因此不是很有用。我必须对谓词字符串做错了,有人可以建议吗?
提前致谢!
答案 0 :(得分:0)
显然,错误表明您的对象不符合键值。 请尝试使用NSDictionary
答案 1 :(得分:0)
该错误表明您的CardObjects
不支持使用KVO进行属性'test'。
但是,您的谓词只是要求比较name
属性,因此看起来这个谓词不是您的webview崩溃的原因。
您可以将webView:shouldInsertText:replacingDOMRange:givenAction:
方法的内容添加到问题中,因为这是发生错误的地方。
我认为更改谓词正在改变此方法后面的代码流,而这就是错误所在的位置(但是没有看到代码的其余部分,这有点猜测!)。
答案 2 :(得分:0)
好的,我仍然不知道为什么我的NSPredicate会出现webview错误。但我已使用以下谓词字符串修复了该问题:
(name like[cd] '*%@*')