2011-09-14 15 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

[OK] NSPredicateのWebviewエラーが表示される理由はまだわかりません。しかし、私は次の述語文字列を使用して問題を解決しました:

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

明らかに、オブジェクトにはキー値に準拠していないエラーがあります。 代わりにNSDictionaryを使用してみてください

0

このエラーは、CardObjectsがKVOで 'test'プロパティをサポートしていないことを示しています。

しかし、述語は単にnameプロパティを比較するように頼むので、この述語のように見えるので、Webviewがクラッシュすることはありません。

webView:shouldInsertText:replacingDOMRange:givenAction:メソッドの内容をバグが発生している場所に追加することができますか?

述語を変更すると、このメソッドの後半でコードの流れが変わってしまい、エラーの箇所が変わってしまったと思います(コードの残りの部分は見ずに、ちょっと推測します)。

+0

こんにちはDean、あなたの答えをありがとう。私は、エラーがwebviewを持っていたことに気付きました。 Webビューではなく、通常のView Controllerと同じですか?ごめんなさい、私はあまりにも長い間、同じコードを見つめていたと思います! – bennythemink