2013-06-02 14 views

risposta

11

Non c'è un accesso diretto ad esso. Dovresti davvero chiedere perché vuoi impostare un timeout personalizzato.

Se è necessario cambiarlo, è necessario creare sottoclasse RKObjectManager e sostituire requestWithObject:. La tua implementazione può semplicemente chiamare super e quindi modificare la richiesta mutabile risultante.

+0

Non uso requestWithObject su Restkit. Io uso [[RKObjectManager sharedManager] postObject .... Is requestWithObject viene sempre chiamato come base del Restkit? Significa che la mia chiamata postObject alla fine usa requestWithObject. La ragione per impostare un timeout è che le risorse di Heroku vanno a dormire quando non vengono utilizzate per un certo periodo di tempo. Se ciò accade, ho bisogno del kit di recupero per aspettare che Heroku inizi a girare (20 secondi). – jdog

+0

Sì, sarà chiamato come risultato di postObject: perché è chiamato da appropriateObjectRequestOperationWithObject: che è chiamato da praticamente tutto. – Wain

8

Quanto segue ha funzionato per me in RestKit 0.20.3: Costruisco personalmente NSMutableRequest e imposta il timeout su questa richiesta. Sfortunatamente non è possibile impostare il timeout della richiesta predefinito in RestKit 0.20.x a causa della politica di AFNetworking per non esporre questa proprietà.

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

Il commento di @ Wain di seguito è la migliore delle risposte poiché si applicherà ai metodi Object * di default di RestKit * (ad esempio getObject: postObject: e putObject :). –

Problemi correlati