5

Core Data とバインディングを使用するアプリケーションがあります。NSTableView にバインドされた NSArrayController を検索できる NSSearchField が必要です。配列コントローラーには、「名前」フィールドを持つ Core Data オブジェクトが含まれています。次のように NSSearchField をセットアップしました。

Bind To: the array controller
Controller Key: filterPredicate
Predicate Format: name contains[c] $value

これは機能します。配列コントローラー内のオブジェクトに関連するオブジェクトのフィールドを検索できるように拡張したいと考えています。配列コントローラー内の各オブジェクトは、「name」というフィールドを持つ「tag」という別のタイプのオブジェクトと対多の関係にあります。私は次のことを試しました:

Bind To: the array controller
Controller Key: filterPredicate
Model Key Path: tags
Predicate Format: name contains[c] $value

ただし、これは機能しません。テキストが NSSearchField に入力されると、NSTableView では何も起こりません。それの何が問題なのですか?

4

1 に答える 1

10

モデル キー パスとしてバインドtagsすると、検索フィールド述語がキー パス arrayController.filterPredicate.tags にバインドされます。配列コントローラーの filterPredicate プロパティにはタグ プロパティがないため、おそらく、サイレント ログに記録されている「キーが見つかりません」という例外が発生します。代わりに、NSArrayController の filterPredicate が配列のメンバーに適用されることを思い出して、バインディングを次のように設定する必要があります。

Bind To: <array controller>
Controller Key: filterPredicate
Predicate Format: ANY self.tags contains[c] $value

self.tagsと書くこともできますがtags、これにより、タグが述語が適用されるオブジェクトのプロパティであることがより明確になると思います。

于 2009-05-12T20:01:23.250 に答える