gpt4 book ai didi

ios - 维护 RKObjectManager/AFHTTPClient 请求排序

转载 作者:行者123 更新时间:2023-11-29 02:37:50 24 4
gpt4 key购买 nike

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

换句话说(缩写):

[postMapping addAttributeMappingsFromArray:@[ @"postID", ... ]];

// ...

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

相关的 PostComment 实体设置了适当的关系等等。

这一切都完全按照它应该的方式工作,但前提是获取帖子的请求在获取评论的请求之前完成。否则评论将不会连接到它的帖子,因为该帖子尚未被提取和映射。

现在,我通过在获取帖子之前不获取评论来解决这个问题。有点像

- (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:... 请求应该按顺序处理,而所有其他请求可以随时运行?

最佳答案

查看创建另一个请求描述符,它深入到评论详细信息并仅处理 postID 属性。对于每一个,运行 postMapping 来创建一个 stub 对象。

请注意,您可能仍然会遇到 2 个不同的背景上下文同时创建相同对象的竞争条件,因此您可能需要处理合并问题(这是如果您有多个对象管理器,因为您谈到了多个端点).

关于ios - 维护 RKObjectManager/AFHTTPClient 请求排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26150655/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com