RestKit问题与关系

时间:2014-10-02 22:53:35

标签: ios objective-c json core-data restkit

我正在使用RestKit和Core Data,我在映射实体之间的关系时遇到了麻烦。问题是我有3个不同的jsons(3个不同的屏幕),这些jsons有相互关联的数据。我的3个实体是Post,Conversation和Message。关系是这样的:每个帖子都有很多对话(多对多关系),每个对话都有很多消息(对多关系)。

这是帖子数组的第一个json:

{"success":true,"result":
[{"totalUsers":1,"lastMessageDate":1411612821000,"id":874,"title":"My post title"},
{"totalUsers":3,"lastMessageDate":1411536669000,"id":539,"title":"Message me"}]}

这是第二个json,它是特定帖子的对话数组:

{"success":true,"result":
[{"badgeSize":1,"lastMessage":
{"id":1725,"text":"hey","datePublished":141153372347},"id":208,"username":"energydrink"}]}

这是特定对话的第三个json:

{"success":true,"result":
{"spamStatus":false,"messages":
[{"id":416,"text":"hello","datePublished":1403432789000},
{"id":380,"text":"whats up","datePublished":1403432144221}]}}

正如您所看到的,关系的数据被分成3个jsons。以下是我当前在RestKit中配置我的关系和响应描述符的方法:

[conversationMapping addPropertyMapping:[RKRelationshipMapping relationshipMappingFromKeyPath:@"messages" toKeyPath:@"messages" withMapping:messageMapping]];

[postMapping addPropertyMapping:[RKRelationshipMapping relationshipMappingFromKeyPath:@"conversations" toKeyPath:@"conversations" withMapping:messageMapping]];

RKResponseDescriptor *responseDescriptor = [RKResponseDescriptor responseDescriptorWithMapping:postMapping method:RKRequestMethodAny pathPattern:nil keyPath:@"result" statusCodes:RKStatusCodeIndexSetForClass(RKStatusCodeClassSuccessful)];

由于响应描述符是使用postMapping映射的,因此我无法正确映射第2和第3个jsons的数据,然后使用我的配置存储在Core Data中。非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

我明白了。基本上,我使用RestKit的映射作为第一个json。在第一个视图控制器上调用tableView:didSelectRowAtIndexPath:时,我将post对象传递给第二个视图控制器。对于第二个json响应,我反序列化了数据并将对话添加到该post对象。然后,我只是打电话给[[RKManagedObjectStore defaultStore].mainQueueManagedObjectContext saveToPersistentStore:&error];。现在它工作得很好。