2013-06-02 34 views

Antwort

11

Es gibt keinen direkten Zugriff darauf. Sie sollten wirklich fragen, warum Sie ein benutzerdefiniertes Timeout festlegen möchten.

Wenn Sie es ändern müssen, sollten Sie die Unterklasse RKObjectManager und überschreiben requestWithObject:. Ihre Implementierung kann einfach super aufrufen und dann die resultierende änderbare Anfrage bearbeiten.

+0

Ich verwende requestWithObject nicht auf Restkit. Ich benutze [[RKObjectManager sharedManager] postObject .... Wird requestWithObject immer als Basis von Restkit aufgerufen? Bedeutung verwendet mein postObject-Aufruf schließlich requestWithObject. Der Grund für das Setzen eines Timeouts liegt darin, dass die Ressourcen von Heroku in den Ruhezustand versetzt werden, wenn sie für eine bestimmte Zeit nicht verwendet werden. Wenn das passiert, brauche ich Restkit, um auf Heroku zu warten (20 Sekunden). – jdog

+0

Ja, es wird als Ergebnis von postObject aufgerufen: weil es von enableObjectRequestOperationWithObject aufgerufen wird: die von fast allem aufgerufen wird. – Wain

8

Folgendes funktionierte für mich in RestKit 0.20.3: Ich konstruiere das NSMutableRequest selbst und setze das Timeout für diese Anfrage. Leider ist es aufgrund der AFNetworking-Richtlinie nicht möglich, das Standard-Anforderungstimeout in RestKit 0.20.x festzulegen, um diese Eigenschaft nicht verfügbar zu machen.

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

@ Wains Kommentar ist der bessere der Antworten, da er sich auf die integrierten * Objekt: Methoden von RestKit bezieht (d. H. GetObject: postObject: und putObject :). –