0

リストにダウンロードする製品がいくつかあるアプリに取り組んでいます。ダウンロードされた製品は表に表示され、各意志には詳細情報を含む詳細ビューが表示されます。

これらの同じ製品をお気に入りとして保存することができ、そのために Core Data を使用しています。

製品を表示するために一連のビューを再利用できるようにしたいと考えています。つまり、ストア オブジェクトとダウンロードされたオブジェクトは同じ種類である必要があります。

では、オブジェクトを最適に実装するにはどうすればよいでしょうか。次のようなクラスを作成できますか。

FavoriteProduct : NSManageObject // 実装

そしてサブクラス化

Product : FavoriteProduct // 実装

?

CD クラスだけでは、すべてが得られるわけではありません。これら 2 つのオブジェクト クラスをマージして、各オブジェクトに異なるビューを実装するという点で前もって行う作業を最小限に抑えるには、どうすればよいでしょうか? 基本的には、FavoriteProduct オブジェクトの場合と同じメソッドなどを Product オブジェクトで呼び出し、両方の種類のビューを再利用できるようにしたいだけです。2 つの違いはわずかです (1 つはもちろんお気に入りとして保存され、メモやタグなどの追加の値がありますが、製品にはありません)。

前もって感謝します

4

1 に答える 1

0

少し前に同じ質問がありました。簡単な答え: コンテキストなしで NSManagedObject サブクラスをインスタンス化することはできないため、NSManagedObject を保存されないもののスーパー クラスとして使用することは (ネットから表示されるだけであるため)、おそらく良い考えではありません。

だからあなたの場合:

  • FavoriteProduct は NSManagedObject のサブクラスでなければなりません
  • したがって、Product (FavoriteProduct のスーパー クラス) も NSManagedObject コンテキストのサブクラスである必要があります。
  • しかし、それはコンテキストで作成する必要があり、良くありません

回避策として、タイプ Product のオブジェクトの「偽の」/一時的なコンテキストを持つことができますが、FavoriteProduct ではありません。

もう1つの可能な解決策は、次の階層を持つことです。

  • 製品:NSObject(または何でも)
  • FavoriteProduct : 製品
  • StoredProduct : NSManagedObject

この場合、通常どおり Product/FavoriteProduct にすべてのメソッドを実装し、FavoriteProduct から StoredProduct へのバインドを行います (つまり、FavoriteProduct に "storedProduct" プロパティを設定できます。このプロパティは、FavoriteProduct のプロパティの一部が更新されるたびに CoreData を更新するために使用されます)。変更されます)

このような状況で他の人が何をしているのか興味があります

于 2010-06-18T04:30:06.977 に答える