私は MagicalRecord を使用して、ポリモーフィズムを多用する CoreData Model にデータをインポートします。
たとえば、すべてが同じ抽象エンティティを拡張する具体的なエンティティのセットは、別のクラスからの多対多の関係で使用されます。別のクラスのプロパティ タイプはモデルで Abstract クラス タイプとして指定されており、Set を許可します。両方の具体的なタイプの混合であること。
MagicalRecord は、インポートされたデータから正しいサブ エンティティを生成しません。
最も単純なケースの例を次に示します。
type として定義されPlantName
た Set を持つというエンティティがあります。、およびを持つ抽象エンティティがあります。これは、2 つのサブエンティティによって拡張されます: which hasとwhich has 。names
NameComponent
NameComponent
searchString
timeStamp
title
CommonName
locale
LatinName
type
インポートする JSON の関連スニペット:
"names": [ /* NameComponent(s) */
{"title": "Jade Plant", "locale": "en_us"}, /* CommonName - US English */
{"title": "Crassulaceae", "type":4}, /* LatinName - Family */
{"title": "Crassula", "type":5}, /* LatinName - Genus */
{"title": "Ovata", "type":6} /* LatinName - Species */
]
インポートの実行後、SQLite DB を見ると、すべてのレコードが抽象クラス タイプとしてインポートされており、さらに、各具象クラス タイプに固有の属性がすべて欠落しています。
この動作の例を見つけることができる唯一の場所は、MagicalRecord の単体テストです。しかし、それでも大事なところが違います。テスト関係は具体的に型付けされていますが、私のものは抽象クラスによって型付けされています。
この違いが、MagicalRecord が個々のレコードを具象クラスとして生成しない原因だと思います。
これを解決する方法はありますか?