Core Data を使用するドキュメント ベース (OS X) アプリがあるため、ドキュメントは NSPersistentDocument のサブクラスです。ユーザーがドキュメントを作成するとき、管理オブジェクト モデル内の特定のエンティティが持つ属性の数を決定する設定を指定します。たとえば、"Baseball Game" エンティティは、ドキュメントの作成時にユーザーが指定した数に応じて、4 ~ 9 のイニング属性を持つことができます。効率化のために、指定されたイニング属性を正確に含む野球ゲーム エンティティを使用して、ドキュメントの作成時に管理対象オブジェクト モデルが生成されます。したがって、5 イニングのドキュメントは、9 イニングのドキュメントとは異なる管理対象オブジェクト モデルを持ちます。
管理オブジェクト モデルを動的に設定するには、ドキュメントでオーバーライド-(id)managedObjectModel
する必要があります。これは些細なことであり、適切なイニング数でマネージド オブジェクト モデルを簡単に提供できます。ただし、ユーザーが保存されたドキュメント (不明なイニング数) を開くと、ドキュメントに管理オブジェクト モデルを与えるように再度求められます。-(id)managedObjectModel
. 私の難問は、自分自身を知らない場合、ドキュメントに何イニングあるのかをどのように伝えることができるかということです。マネージ オブジェクト モデルは実行時に作成および設定されるため、イニング数を示す何らかのプロパティをドキュメントに追加することをお勧めします。ドキュメントごとに NSUserDefaults に似たものを考えていましたが、そのようなものはありません。私が考えることができる唯一の方法は、明示的にイニング数を与えるエンティティ/属性を保存することですが、ドキュメントに管理オブジェクトモデルを与えるまでアクセスできません! これについての適切な方法は何ですか?