RestKit 0.22.0:每个 - [getObject]调用取消前一个(错误-999)

时间:2013-12-21 08:46:34

标签: restkit nsurlrequest nsoperationqueue restkit-0.20

  1. 首先,getObject包含ID列表。
  2. 然后,将这些ID用于多个getObject的呼叫。
  3. 问题在于多个getObject中的任何一个被取消(error -999

    RKObjectManager *objectManager = [RKObjectManager sharedManager];
    
    - (void)firstGetListOfIDs 
    {
        A *a = [A new];
        [objectManager getObject:a
                            path:nil
                      parameters:parameters
                         success:^(RKObjectRequestOperation *operation, RKMappingResult *mappingResult) {
                             for (NSString* anID in a.listOfIDs)
                                 [self thenGetObjectForID:anID];
                         } failure:nil];
    }
    
    - (void)thenGetObjectForID:(NSString*)anID
    {
        B *b = [B new];
        [objectManager getObject:b
                            path:nil
                     parameters:parametersWithAnID
                        success:^(RKObjectRequestOperation *operation, RKMappingResult *mappingResult) {
                     } failure:nil];
    }
    

    也就是说,getObjectthenGetObjectForID:行和211上的每个552来电(RKObjectRequestOperation.m上方)错误:

      

    E restkit.network: RKObjectRequestOperation.m:211 GET   'http://domain.com/sdk/b?id=anID'   (0/0对象)[request = 0.0000s mapping = 0.0000s total = 0.0006s]:   取消

         

    E restkit.network: RKObjectRequestOperation.m:552 对象请求失败:   基础HTTP请求操作失败,错误:错误   Domain = NSURLErrorDomain Code = -999“操作不能   完成。 (NSURLErrorDomain错误-999。)“UserInfo = 0x134772e0   {NSErrorFailingURLKey = http://domain.com/sdk/b?id=anID}

    现在,我可以通过添加[objectManager.operationQueue waitUntilAllOperationsAreFinished];来解决这个问题,但是,这可以阻止主线程。 如何制作多个异步 getObject请求?

    我已尝试使用RKObjectManager的{​​{1}},但不确定是否正确。

2 个答案:

答案 0 :(得分:1)

您应该升级到RestKit的最新版本(或至少不是预先版本)。

通常,您的代码看起来很好,您应该可以进行多个并发请求。您应该将objectManager.operationQueue上的最大并发操作数设置为大约5,否则您可能会泛滥系统并且所有请求都将超时。

答案 1 :(得分:0)

罪魁祸首原来是一个流浪的[[RKObjectManager sharedManager] cancelAllObjectRequestOperationsWithMethod:matchingPathPattern:];电话。