通常、XCodeが提供するテンプレートには、managedObjectContext
が付属していAppDelegate
ます。managedObjectContext
アレイコントローラの参照をmanagedObjectContext
inにバインドする必要がありAppDelegate
ます。
このためにはAppDelegate
、xib内のオブジェクトを作成する必要があります。つまり、オブジェクトがまだ存在しない場合です。(オブジェクトライブラリからオブジェクトプレースホルダーをドラッグし、そのクラスをとして作成しますAppDelegate
)
これによりAppDelegate
、そのxib内のバインディングが表示されます。
次のステップは、実際にmanagedObjectContextをバインドすることです。アレイコントローラーを選択し、バインディングインスペクターに移動します。パラメータセクションで、ドロップダウンから[App Delegate]を選択し、[Bindto]をオンにします。[モデルキーパス]フィールドに。を入力しself.managedObjectContext
ます。これで、接続インスペクターにも接続が表示されます。
更新:
新しいAppDelegate
オブジェクトを作成するプロセスは、メインのnibファイルにまだ存在していない場合にのみ実行されます(ただし、生成されたスタブには常にAppDelegate
メインのnibファイルにオブジェクトがあります)。
非メインnibファイルの場合、上記のアプローチに従うと、デリゲートAppDelegate
ではない新しいオブジェクトが作成されます。NSApplication's
これは、各ペン先で提供されるアプリケーションオブジェクトプロキシのデリゲートアウトレットを接続することで解決できますが、AppDelegate
オブジェクトは同じではありません。
その結果、2つの異なるmanagedObjectContextが同じストアと通信します。各ステップで変更を保存すると、これは正しく機能するように見えるかもしれませんが、これは私たちが望んでいることではありません。
適切なAppDelegateオブジェクト、つまりメインのnibファイルで使用されているオブジェクトを取得するには、次のようにします
。-新しいオブジェクトを作成する代わりに、アプリケーションを介してアレイコントローラーのをデリゲートに直接AppDelegate
バインドします。managedObjectContext
つまり、バインドするオブジェクトはアプリケーションオブジェクトになり、使用されるキーパスはになりますself.delegate.managedObjectContext
。