0

インスタンス変数、クラスメソッド、およびインスタンスメソッドを持つ単純なカスタムオブジェクト( "Ingredient")があります。このカスタムオブジェクトは、私のアプリケーション全体で容赦なく絡み合っています。CoreDataを使用してこのカスタムオブジェクトのインスタンスを保存したいと思います。私が読んだことから、管理対象オブジェクトにインスタンス変数とメソッドを含めることはお勧めできません。

だから今、私はどのように進めるかについて混乱しています。

同様の状況の例から、結果をフェッチして次のような配列に配置するのが一般的な方法のようです。

NSMutableArray *array = [managedObjectContext executeFetchRequest:fetchRequest error:&error];

しかし、オブジェクトのmutableArrayで何ができるのかわかりません。カスタムオブジェクトで現在実行したいすべてのこと(インスタンス変数の変更、オブジェクトのメソッドへの送信など)を実行できますか?

または、現在行っているように「Ingredient」オブジェクトを使用して、「Ingredient」インスタンス変数に一致する属性を持つ「ArchivedIngredient」管理対象オブジェクトを作成しますか?保存する必要があるときに「Ingredient」を「ArchivedIngredient」オブジェクトに変換し直しますか?もしそうなら、それはどのように行われますか?

ここで何が欠けていますか?

4

1 に答える 1

1

私が読んだことから、管理対象オブジェクトにインスタンス変数とメソッドを含めることはお勧めできません。

これが何を意味するのかはわかりませんが、コアデータエンティティに基づいてクラスを作成することになっていないという意味であれば、間違っています。Core Data Inspectorを使用して、エンティティにカスタムクラスを割り当て、モデル上のエンティティを選択し、Xcodeの製品メニューを使用して[Create NSManagedObject Subclass]を見つけることにより、そのクラスの実装のヘッダーとソースファイルを作成できます。これにより、NSManagedObjectサブクラスが生成されます。他のクラスと同じように、インスタンスメソッドとクラスメソッドを追加できます。

カスタムクラスのプロパティを変更し、これらの変更を保存する場合は、オブジェクトのフェッチに使用した管理対象オブジェクトコンテキストを取得し、saveメソッドを呼び出す必要があります。これにより、変更が永続ストアに配置されます。

また、「executeFetchRequest」を呼び出しているメソッドは可変配列を返さないことに注意してください。NSArrayの不変のサブクラスを返します。これはNSArrayとして扱う必要があります。

于 2012-10-18T03:59:15.013 に答える