我有一个iOS应用程序,它使用带有核心数据持久性的RestKit。它从几个不同的端点加载数据,大多数端点将完整的对象图作为嵌套的JSON对象返回。但是其中一个端点将包含外键引用(而不是嵌套JSON)的对象返回到另一个端点的数据。
换句话说(简称):
[postMapping addAttributeMappingsFromArray:@[ @"postID", ... ]];
// ...
[commentMapping addAttributeMappingsFromArray:@[ ... ]];
[commentMapping addConnectionForRelationship:@"post" connectedBy:@"postID"];其中,相关的Post和Comment实体是用适当的关系设置的,等等。
所有这些都完全正常工作,但只有在获取帖子的请求在请求获取注释之前完成时才能完成。否则,评论将不会连接到它的帖子,因为该帖子尚未被获取和映射。
现在,我要绕开它,在帖子被取出来之前,不要取评论。有点像
- (void)fetchPosts {
[objectManager getObjectsAtPath:@"/posts.json"
parameters:nil
success:^(RKObjectRequestOperation *operation, RKMappingResult *mappingResult) {
[self fetchComments]; // *now* we can fetch comments
// ...但我想知道是否有更好的方法?
我想我也许能做些像
[objectManager.HTTPClient.operationQueue setMaxConcurrentOperationCount:1];但大多数情况下,我确实希望并发请求。只有两个请求必须是连续的。
我想我可以设置两个不同的对象管理器(一个执行顺序请求,另一个执行并发请求),但我不确定这是否有意义。
那么,是否有办法指定两个特定的-getObjectsAtPath:...请求应该按顺序处理,而所有其他请求都可以在任何时候运行?
发布于 2014-10-02 17:02:06
看看如何创建另一个请求描述符,它深入到注释细节,只处理postID属性。对于每一个对象,运行postMapping来创建存根对象。
请注意,您可能仍然会遇到两个不同背景上下文的争用条件,它们同时创建相同的对象,因此您可能需要处理合并问题(如果您在谈到多个端点时有多个对象管理器)。
https://stackoverflow.com/questions/26150655
复制相似问题