Cocoa touch 如何使用RestKit序列化多态到多个核心数据关系?

Cocoa touch 如何使用RestKit序列化多态到多个核心数据关系?,cocoa-touch,cocoa,serialization,restkit,polymorphic-associations,Cocoa Touch,Cocoa,Serialization,Restkit,Polymorphic Associations,我需要将一个核心数据类(调查问卷)序列化为一个抽象实体(问题),该类具有对多关系(问题) Question是许多具体子类(BooleanQuestion,ClosedQuestion…)的父实体,每个子类都有一个RKManagedObjectMapping 如何设置问卷映射以序列化此多态关系 如果它不是多态的,我会: [questionnaireMapping mapRelationShip:@"questions" withMapping:[questionMapping inverseMap

我需要将一个核心数据类(
调查问卷
)序列化为一个抽象实体(
问题
),该类具有对多关系(
问题

Question
是许多具体子类(
BooleanQuestion
ClosedQuestion
…)的父实体,每个子类都有一个
RKManagedObjectMapping

如何设置问卷映射以序列化此多态关系

如果它不是多态的,我会:

[questionnaireMapping mapRelationShip:@"questions" withMapping:[questionMapping inverseMapping]];
但我不能这样做:问题不会来自任何一个类,因此没有一个映射可以传递

此外,这个问题是抽象的,甚至没有映射(尽管我可以定义一个映射)

我如何使用RestKit版本0.10.3处理这个问题

请注意,我即将发布我的产品,我真的很不愿意在我的产品周期这么晚的时候迁移到RestKit0.20

我想我可以把所有具体的
Question
子类聚合成
Question
,使其具体化、单态化(和整体化)。这将是丑陋的(尽管我相信这正是核心数据在幕后使用SQLite所做的)

还有更优雅的吗

谢谢


JD

升级到0.20无论如何都不会有帮助,因为我认为这里也不包括这种情况

我建议您在层次结构中的每个类上实现一个方法(或者只使用
KVC
),该方法返回键和值的字典。这可以通过使用KVC
-dictionaryWithValuesForKeys:
高效地完成。键列表应该是所有类的所有键的并集。现在,您可以构建一个可以映射的字典数组。您还需要实现
KVC
-valueforundinedkey:
,以防止在此过程中出现异常

现在,在您的
问卷调查
类中,您可以实现一个方法来循环
问题
关系内容,并构建字典列表。假设该方法名为
encodedQuestions
,则您的映射如下所示:

[questionnaireMapping mapRelationShip:@"encodedQuestions" withMapping:questionDictMapping];
我实际上还没有尝试过这样做,所以有一个问题是关于RestKit在核心数据对象上使用的反射,以及它将如何满足您的关系映射