- Во-первых,
getObject
со списком идентификаторов. - Затем используйте эти ID для нескольких вызовов
getObject
.
Проблема заключается в том, что любые один из тех многократного getObject
будет отменено (error -999
).RestKit 0.22.0: each - [getObject] отменяет предыдущий (ошибка -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 objects) [request=0.0000s mapping=0.0000s total=0.0006s]: Cancelled
E restkit.network:RKObjectRequestOperation.m:552 Object request failed: Underlying HTTP request operation failed with error: Error Domain=NSURLErrorDomain Code=-999 "The operation couldn’t be completed. (NSURLErrorDomain error -999.)" UserInfo=0x134772e0 {NSErrorFailingURLKey= http://domain.com/sdk/b?id=anID }
Теперь я могу это исправить, добавив [objectManager.operationQueue waitUntilAllOperationsAreFinished];
, но, увы, этого блокирует основные нить. Как сделать несколько, асинхронныйgetObject
просит?
Я пробовал использовать RKObjectManager
enqueueBatchOfObjectRequestOperations:progress:completion:
, хотя и не уверен, что правильно.
Даже при 'maxConcurrentOperationCount = 2' запросы« отменяют »друг друга (' error -999'). PS. Я попробовал обновление до 0,22, но не смог (либо через CocoaPods, либо как Git-подмодуль): 0.22 как-то разбивает сопоставление объектов. Попробуете версии 0.21 или 0.20. – Blaz
Не повезло с 0.20.3. При прочих равных условиях обновление от версии «-pre6» прерывает отображение. – Blaz
У вас есть журнал сервера? Его можно было отменить. Или может быть, что для передач нет свободного пространства для буфера. – Wain