私は配列コントローラーを持っていて、それにエンティティをバインドし、記述子と述語を並べ替えました。アプリの実行時に述語の形式を変更すると、それが機能するため、バインディングが機能しています。
私の問題は、述語を変更したいときです。ユーザーが入力した検索語または文字列では何も起こりませんが、コア データ データベースにレコードを追加すると、テーブルビューが更新されます。
私の質問は、述語が変更され、それ自体を更新する必要があることをアレイコントローラーにどのように伝えるかです。検索語を入力すると実行されるコードを次に示します。これも機能し、すべての NSLogs 出力が正しく取得されます。私のテーブルビューだけが更新されていません。
- (IBAction)didChangeSearch:(id)sender {
if (sender == searchField) {
NSString *searchterm = [sender stringValue];
if (searchterm.length > 1) {
predicate = [NSPredicate predicateWithFormat:@"name contains [c]%@", @"m"];
NSLog(@"Putting predicate to the job : %@", searchterm);
} else {
predicate = nil;
NSLog(@"There is nolonger any predicate");
}
}
NSLog(@"I just got %@", [sender stringValue]);
}
最初に言いたいのは、私はバインディングに非常に慣れていない、今夜までそれらを使用したことがない、それらに良い感触を得て、それが好きで、非常に多くのコードを節約し、最終的にそれを理解した (1 日ほど)できる)。