我一直在研究如何使用RestKit 0.22.0来连接Core Data中的关系,并且想知道如何映射部分形成的实体。
我正在使用的API返回类似于下面所示的JSON。请注意,轨道数组正在返回包含轨道的外键ID的字典对象。
{
"code": 200,
"data": [
{
"active": true,
"tracks": [
{
"collection": "tracks",
"id": "00000000000000000000000000"
},
{
"collection": "tracks",
"id": "11111111111111111111111111"
}
],
"created_at": "2014-04-25 07:00:07.264000",
"id": "abcdefghijklmnop1234567890",
"title": "My Playlist",
"updated_at": "2014-04-25 16:44:39.390000",
"weight": 0.0
}
],
"info": {
"limit": null,
"skip": null,
"total": 1
}
}
数据模型如下所示(为演示而简化):
播放列表的实体映射当前包含以下用于设置关系的代码:
[playlistEntityMapping addPropertyMapping:[RKRelationshipMapping relationshipMappingFromKeyPath:@"tracks" toKeyPath:@"tracks" withMapping:trackEntityMapping]];
然后我可以点击API来检索完整形式的对象。这似乎适用于GET请求,并且它在使用identifyAttributes设置的核心数据中使用相同的托管对象。但是,这闻起来不太对劲。如果我尝试使用具有任何本地修改关系的服务器上的PATCH对象的逆映射,RestKit将创建完整形式/嵌套的JSON结构以发送到服务器,而不是简单地使用外键。
我完成了我的研究,发现了许多有用的资源,如:
......和其他人。
看起来RKConnectionDescription可以帮助我剔除数据。 RKConnectionDescription文档包含一个示例,其中一组id被填充到实体的瞬态属性中。如果在文档片段之外有参考示例,我很乐意看到RKConnectionDescription的实例。这似乎是RestKit武器库中的一个强大的工具,可能值得一些示例代码或在wiki中进行深入探索。
有人能指出我正确的方向正确连接这些关系吗?
答案 0 :(得分:1)
您无法使用RestKit的外键功能进行序列化,因为它专为映射传入数据而设计。我没有尝试过,但是当我采用映射的逆时,我不会期望连接被反转,因为它只是使用来自其他映射的信息(通常是瞬态变量)来促进关系建立。
所以,你应该做的是创建一个自定义映射(而不是反转),它只从关系(标识)中提取你想要的信息,并使用该映射进行序列化。