thisガイドを使用するガイド私は、Mac OS XとiOSバージョンの1つのアプリケーションで共有できるスタティックライブラリ(AppCore)を作成しました。この静的ライブラリはコアデータを使用し、そのポイントは異なる実装間でモデル部分とスキーマのバージョン管理を共有することです。NSArrayControllerと共有の静的コアデータベースライブラリを参照
NSPersistentDocument
ベースのプロジェクトを作成しました。これは、このAppCoreに依存します。このプロジェクトでは、.xcdatamodelファイルへの参照を追加しました。次に、アシストされた「新しいコアデータエンティティ」項目を使用して1つのエンティティタイプの配列を編集するための追加/削除ボタンを含む簡単なテーブルビューを作成しました。これにより、NSArrayController
というインスタンスが作成され、追加/削除の動作に必要なバインディングが作成されました。
コアデータエンティティ(NSManagedObject
)の既定のクラスを使用していて、+/-ボタンを使用して新しい行を追加できるようになりました。私は、カスタムのいずれかにエンティティ実装クラスを変更した場合しかし、私はエラー
Failed to create new object
これはNSArrayController
から来ているようだし、必要なエンティティをインスタンス化することができないように思われるが取得しています。なぜNSArrayController
のインスタンスができない私は混乱何
[NSEntityDescription insertNewObjectForEntityForName:@"SomeEntity" inManagedObjectContext:[self managedObjectContext]]
:私は、しかし、でNSPersistentDocument
サブクラスを作成することができます。私が正しく理解していれば、配列コントローラはクラスではなくエンティティを作成するように指示されています。私の推測では、エンティティはNSEntityDescription
クラスの助けを借りて作成されています。私は自分のバージョンのアレイコントローラのadd:
を実装することができましたが、ここでも何かが根本的に間違っているかもしれません。私はinit:
に触れておらず、カスタムエンティティクラスの実装は、単に属性を直接アクセスするための便宜のためのものです。
AppCoreで基本SDKを変更しようとしましたが、効果がありません。現在のところ、iOSバージョンを使用していますが、どうすればよいはずです。これは別の質問ですが、無関係な場合は別の質問でここでお尋ねします。
要約すると、なぜNSArrayController
はこのエンティティのインスタンスを作成できませんか?
ありがとうございます。
更新
私が参考に依存プロジェクトにAppCoreからSomeEntity
クラスを追加する場合、これは動作します。 AppCoreへの変更をdependatntプロジェクトにも伝播しなければならないので、これは最も有用な方法ではありません。