2011-09-14 84 views
1

我正在嘗試使用NSPredicate搜索對象數組。這些對象有一些我想要過濾的NSString屬性。NSPredicate問題

我有以下的代碼做過濾:

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

您會發布要存儲在predicateString中的值嗎? –

+0

錯誤看起來不相關。你可以仔細檢查應用程序是否只在插入單引號時才起作用? –

+0

抱歉,延遲人。 @iApple predicateString =名稱,如[c] test。 – bennythemink

回答

0

好吧,我仍然不知道爲什麼我得到NSPredicate的webview錯誤。但我已經使用以下謂詞字符串修復了問題:

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

顯然,錯誤表明您的對象不符合鍵值。 嘗試使用NSDictionary代替

0

錯誤指出您的CardObjects不支持KVO屬性'測試'。

但是,您的謂詞只是要求比較name屬性,因此它看起來像這個謂詞不是您的webview崩潰的原因。

您可以將webView:shouldInsertText:replacingDOMRange:givenAction:方法的內容添加到問題中,因爲這是發生錯誤的地方。

我認爲改變謂詞正在改變這個方法後面的代碼的流程,這就是錯誤所在(但沒有看到代碼的其餘部分,這是一個猜測!)。

+0

嗨,迪恩,感謝您的回答。我只是注意到,錯誤有一個webview中,我不知道爲什麼這是代碼不是從一個叫網頁視圖,而只是一個普通的視圖控制器?!抱歉錯過了,猜測我一直在盯着相同的代碼太久了! – bennythemink