ドキュメントベースの Core Data アプリがあります。私のメインの Core Data エンティティにはいくつかの文字列フィールドがあり、そのほとんどは NSTextFields にバインドされていますが、1 つが NSTextView にバインドされています。
Hillegassの本で説明されているように、ビューの切り替え(複数のビューコントローラーを使用)の手法を使用しています。すべてのサブビューは、managedObjectContext フィールドを持つ NSViewController のサブクラスである ManagedViewController によって制御されます。
サブビューは別の nib ファイルに存在します。なんらかの理由で、その nib で設定したバインディングが機能しませんが、代わりにメインの nib ファイルでまったく同じ方法でウィジェットとバインディングを設定すると、正常に動作します。
画像を参照してください:
スクリーンショット http://img180.imageshack.us/img180/3391/screenshot.gif
メインの nib ファイルには、managedObjectContext がファイルの所有者の mOC (ファイルの所有者は MyDocument) にバインドされているツリー コントローラーがあります。NSTextField の値 (はい、値 -- リッチ テキストではありません) は、treeController.selection.content (コンテンツはエンティティの文字列プロパティです) にバインドされます。問題ありません。これはうまくいきます。
2 番目の nib ファイルには、別のツリー コントローラーがあり、その managedObjectContext はファイルの所有者の mOC にバインドされています (ファイルの所有者は私の ManagedViewController です)。NSTextField の値は、上記と同じ方法でバインドされます。
私のコードでは、2 つの managedObjectContext が同じオブジェクトを参照していることを確認するためにテストしました。彼らはそうします、そしてそれはゼロではありません。
エラーは発生しません。サブビューで値が NSTextViews とバインドされないだけです。それらは常にゼロです。
また、私は NSTextFields を試しました - 同じ問題。
コア データ バインディングをサブビューと複数の NIB でうまく機能させる方法についてのアイデアはありますか?