首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >维护RKObjectManager/AFHTTPClient请求排序

维护RKObjectManager/AFHTTPClient请求排序
EN

Stack Overflow用户
提问于 2014-10-01 21:05:57
回答 1查看 82关注 0票数 0

我有一个iOS应用程序,它使用带有核心数据持久性的RestKit。它从几个不同的端点加载数据,大多数端点将完整的对象图作为嵌套的JSON对象返回。但是其中一个端点将包含外键引用(而不是嵌套JSON)的对象返回到另一个端点的数据。

换句话说(简称):

代码语言:javascript
复制
[postMapping addAttributeMappingsFromArray:@[ @"postID", ... ]];

// ...

[commentMapping addAttributeMappingsFromArray:@[ ... ]];
[commentMapping addConnectionForRelationship:@"post" connectedBy:@"postID"];

其中,相关的PostComment实体是用适当的关系设置的,等等。

所有这些都完全正常工作,但只有在获取帖子的请求在请求获取注释之前完成时才能完成。否则,评论将不会连接到它的帖子,因为该帖子尚未被获取和映射。

现在,我要绕开它,在帖子被取出来之前,不要取评论。有点像

代码语言:javascript
复制
- (void)fetchPosts {
    [objectManager getObjectsAtPath:@"/posts.json"
                         parameters:nil
                            success:^(RKObjectRequestOperation *operation, RKMappingResult *mappingResult) {
                                [self fetchComments]; // *now* we can fetch comments
                                // ...

但我想知道是否有更好的方法?

我想我也许能做些像

代码语言:javascript
复制
 [objectManager.HTTPClient.operationQueue setMaxConcurrentOperationCount:1];

但大多数情况下,我确实希望并发请求。只有两个请求必须是连续的。

我想我可以设置两个不同的对象管理器(一个执行顺序请求,另一个执行并发请求),但我不确定这是否有意义。

那么,是否有办法指定两个特定的-getObjectsAtPath:...请求应该按顺序处理,而所有其他请求都可以在任何时候运行?

EN

回答 1

Stack Overflow用户

发布于 2014-10-02 17:02:06

看看如何创建另一个请求描述符,它深入到注释细节,只处理postID属性。对于每一个对象,运行postMapping来创建存根对象。

请注意,您可能仍然会遇到两个不同背景上下文的争用条件,它们同时创建相同的对象,因此您可能需要处理合并问题(如果您在谈到多个端点时有多个对象管理器)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26150655

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档