getObject
包含ID列表。 getObject
的呼叫。 问题在于多个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];
}
也就是说,getObject
中thenGetObjectForID:
行和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}},但不确定是否正确。
答案 0 :(得分:1)
您应该升级到RestKit的最新版本(或至少不是预先版本)。
通常,您的代码看起来很好,您应该可以进行多个并发请求。您应该将objectManager.operationQueue
上的最大并发操作数设置为大约5,否则您可能会泛滥系统并且所有请求都将超时。
答案 1 :(得分:0)
罪魁祸首原来是一个流浪的[[RKObjectManager sharedManager] cancelAllObjectRequestOperationsWithMethod:matchingPathPattern:];
电话。