2013-06-02 51 views

回答

11

沒有直接訪問它。你應該真的問你爲什麼要設置自定義超時。

如果您確實需要更改它,您應該子類RKObjectManager並覆蓋requestWithObject:。您的實現可以調用super,然後編輯生成的可變請求。

+0

我沒有在Restkit上使用requestWithObject。我使用[[RKObjectManager sharedManager] postObject .... requestWithObject始終作爲Restkit的基礎調用嗎?這意味着我的postObject調用最終使用requestWithObject。設置超時的原因是Heroku資源在未使用一段時間後會進入睡眠狀態。如果發生這種情況,我需要Restkit等待Heroku旋轉(20秒)。 – jdog

+0

是的,它將作爲postObject的結果被調用:因爲它是由appropriateObjectRequestOperationWithObject調用的:它被幾乎所有的東西調用。 – Wain

8

下面在RestKit 0.20.3中爲我工作:我自己構造NSMutableRequest,並設置此請求的超時時間。不幸的是,由於AFNetworking的策略不公開此屬性,因此無法在RestKit 0.20.x中設置默認請求超時。

NSMutableURLRequest *request = [objectManager requestWithObject:nil method:RKRequestMethodGET path:@"test.json" parameters:nil]; 

[request setTimeoutInterval:300]; // set the timeout for this request to 5 minutes 

RKManagedObjectRequestOperation *op = [[RKObjectManager sharedManager] managedObjectRequestOperationWithRequest:request managedObjectContext:[[[RKObjectManager sharedManager] managedObjectStore] mainQueueManagedObjectContext] success:^(RKObjectRequestOperation *operation, RKMappingResult *mappingResult) { 
    NSLog(@"Success, %d results loaded", [mappingResult count]); 
} failure:^(RKObjectRequestOperation *operation, NSError *error) { 
    NSLog(@"Fail"); 
}]; 

[[RKObjectManager sharedManager] enqueueObjectRequestOperation:op]; 
+1

@ Wain的下面的評論是更好的答案,因爲它將應用於RestKit的內置* Object:方法(即getObject:postObject:和putObject :)。 –