在使用委托方法的RestKit 0.10.3中,我能够发送同步的GET请求,即使每个请求的映射是按顺序执行的。我有GET请求,需要很多时间才能收到响应,所以我想同时发送所有请求但尊重映射中的顺序(我有跨越三个请求的关系)。我需要的是:
1)发送GET请求n。 1,发送GET请求n。 2,发送GET请求n。 3
2)一收到响应1就开始映射请求1
3)当响应1的映射完成时,等待响应2并映射 (或者如果已经收到则开始映射)
4)当响应2的映射完成时,等待响应3并映射 (或者如果已经收到则开始映射)
似乎发生了什么(如果objectManeger上的operationQueue未设置为1):
1)发送GET请求n。 1,发送GET请求n。 2,发送GET请求n。 3
2)收到后立即映射回复,之前的映射已完成
问题1:是否可以尊重映射中的订单?
问题2:可以同时发生更多响应(第2点)的映射吗?换句话说,这是否可能:
1)发送GET请求n。 1,发送GET请求n。 2
2)开始映射响应1
3)开始映射响应2
4)映射响应1结束
5)映射响应2结束
如果无法做到这一点,我会有一个“半”解决方案:将每个请求排入willMapDeserializedResponseBlock。请求不会同时发送,但至少我可以在上一次映射之前发送每个请求。
问题3:如果我在交叉关系的两边复制了entityMappings的“addConnectionForRelationship”,那么三个映射应该同时执行,顺序不再重要。这是否可能,而不会产生一些邪恶的行为(重复的对象,孤立的对象,缺少关系,低性能)??
我疯了吗? :d答案 0 :(得分:0)
如果您没有数据库中的现有对象,那么在后台同时运行多个操作将导致问题,因为您将尝试连接或防止不同线程中多个上下文之间的重复。
2个通用解决方案是:
如果您需要明确订单,则应使用AFNetworking同时执行下载,然后将RestKit映射操作与响应数据一起使用,并指定它们之间的依赖关系。