期待どおりにUIが更新されません。
アプリケーションは、iTunesと同様のビューを使用して「プロジェクト」を表示します。左側のソースリストを使用すると、右側のリスト(NSTableView)をフィルタリングできます。私のフィルターは、単純なフィールド(名前、文字列など)を調べているときに正しく更新されますが、配列(タグなど)は調べられません。
オブジェクトの1つ(「タグ」と呼ばれるNSMutableArrayフィールドから)からタグを削除していますが、テーブルのNSArrayControllerにバインドされている述語と一致しなくなったため、リストからタグが表示されなくなると思います。
ProjectBrowser.mm:
self.filter = [NSPredicate predicateWithFormat:@"%@ IN %K",
selectedTag,
@"tags"];
Project.mm:
[self willChangeValueForKey:@"tags"];
[tags removeAllObjects];
[self didChangeValueForKey:@"tags"];
私もこれを試しましたが、結果は同じです:
[[self mutableArrayValueForKey:@"tags"] removeAllObjects];
Interface Builderのセットアップ:
- ProjectBrowserオブジェクトはXIBのファイル所有者です
- NSArrayController(プロジェクトコントローラー)のコンテンツ配列は、「ファイルの所有者」にバインドされています。
- ProjectControllerのフィルタ述語は「File'sOwner」.filterにバインドされています
- NSTableViewの列は「ProjectController」.nameにバインドされています