Core data RestKit 0.2x同步RKManagedObjectRequestOperation

Core data RestKit 0.2x同步RKManagedObjectRequestOperation,core-data,restkit,afnetworking,restkit-0.20,rkobjectmapping,Core Data,Restkit,Afnetworking,Restkit 0.20,Rkobjectmapping,在RestKit0.10.3中,使用委托方法,我能够同时发送GET请求,即使每个请求的映射是按顺序执行的。我收到的请求需要很长时间才能收到响应,因此我希望同时发送所有请求,但要遵守映射顺序(我有三个请求之间的关系)。我需要的是: 1) 发送获取请求。1,发送GET请求n。2、发送获取请求。三, 2) 一旦收到响应1,就开始映射请求1 3) 当响应1的映射完成时,等待响应2并映射 (如果已经收到,则只需启动映射) 4) 当响应2的映射完成时,等待响应3并映射 (如果已经收到,则只需启动映射) 发生

在RestKit0.10.3中,使用委托方法,我能够同时发送GET请求,即使每个请求的映射是按顺序执行的。我收到的请求需要很长时间才能收到响应,因此我希望同时发送所有请求,但要遵守映射顺序(我有三个请求之间的关系)。我需要的是:

1) 发送获取请求。1,发送GET请求n。2、发送获取请求。三,

2) 一旦收到响应1,就开始映射请求1

3) 当响应1的映射完成时,等待响应2并映射 (如果已经收到,则只需启动映射)

4) 当响应2的映射完成时,等待响应3并映射 (如果已经收到,则只需启动映射)

发生的情况(如果objectManeger上的operationQueue未设置为1):

1) 发送获取请求。1,发送GET请求n。2、发送获取请求。三,

2) 在收到响应并且上一次映射完成后立即映射响应

问题1:是否可以尊重映射中的顺序

问题2:是否可以同时映射更多的响应(第2点)?换句话说,这是否可能:

1) 发送获取请求。1,发送GET请求n。二,

2) 开始映射响应1

3) 开始映射响应2

4) 映射响应1结束

5) 映射响应2结束

如果这是不可能的,我将有一个“半”解决方案:将每个请求排队到willMapDeserializedResponseBlock中。请求不会同时发送,但至少我能够在上一次映射之前发送每个请求

问题3:如果我在交叉关系的两侧复制entityMappings的“addConnectionForRelationship”,那么这三个映射应该同时执行,并且顺序应该不再重要。在不产生一些不良行为(重复对象、孤立对象、缺少关系、性能低下)的情况下,这是可能的吗

我疯了吗?
:D

如果数据库中没有现有对象,则在后台同时运行多个操作将导致问题,因为您将尝试在不同线程中连接或防止跨多个上下文的重复

这两种通用解决方案是:

  • 不要同时运行这些请求
  • 预先创建所有存根对象,然后响应填充并关联它们
  • 如果需要明确的顺序,那么应该使用AFNetworking并发执行下载,然后对响应数据使用RestKit映射操作,并指定它们之间的依赖关系