【发布时间】:2012-07-04 20:37:39
【问题描述】:
我使用 MagicalRecord 将数据导入到大量使用多态性的 CoreData 模型中。
例如,一组具体实体都扩展了同一个抽象实体,用于来自另一个类的多对多关系,该类在模型中将其属性类型指定为抽象类类型,允许Set 是两种具体类型的混合物。
MagicalRecord 不会从导入的数据中生成正确的子实体。
这是一个最简单案例的例子。
我有一个名为PlantName 的实体,它有一个names 集合,定义为NameComponent 类型。
我有一个抽象实体NameComponent,它有:searchString、timeStamp 和title。
它由两个子实体扩展:CommonName 具有 locale 和 LatinName 具有 type。
要导入的JSON相关sn-p:
"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 无法将单个记录生成为具体类的原因。
有没有办法解决这个问题?
【问题讨论】:
标签: objective-c core-data magicalrecord