2013-06-02 61 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 :)。 –