NSArrayController を managedObjectContext にバインドし、配列コントローラーを使用して NSTableView を設定するという奇妙な問題が発生しています。オブジェクトを作成して挿入すると、新しいオブジェクトが追加され、コントローラーにバインドされた列の 1 つが更新されますが、他の列は更新されません! アプリを閉じてアプリを再起動すると、すべてが正しく入力されるため、フィールドが設定され、バインドが正しく機能していることはわかっています (おそらく)。
何が欠けているのかわからない!バインディングをデバッグするにはどうすればよいですか? ここで見つけたものから: https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/CoreData/Articles/cdTroubleshooting.html#//apple_ref/doc/uid/TP40002320-SW6 基本的にコントローラーまたはキー値コーディングのコンプライアンスである可能性があると言っているだけです。
エンティティを作成するコードは次のとおりです。
NSManagedObjectContext* context = [[BugManager shared] managedObjectContext];
NSError* error;
Bug* newBug = [NSEntityDescription insertNewObjectForEntityForName:@"Bug" inManagedObjectContext:context];
[newBug setValuesForKeysWithDictionary:data];
[context save:&error];
すべてのフィールドが正しく設定され、保存されていることを確認しました。また、値を明示的に設定して、それが問題を観察するキー値であるかどうかを確認しようとしました。
これは正しく更新されている列です。
正しく更新されていないものは次のとおりです。
そしてアレイコントローラー:
テーブルの列を再配置できますが、ターゲット フィールド (以前に更新していたフィールド) のみを更新します。テーブルのすべての列を正しく更新したいだけですが、予想以上に難しいです。