- 首先,
getObject
帶有一個ID列表。 - 然後,將這些ID用於多個
getObject
的調用。
的問題是,那些多個getObject
的任一項被取消(error -999
)。RestKit 0.22.0:每個 - [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