Как установить интервал ожидания для RESTKIT Object Manager

Я использую диспетчер объектов RESTKIT для получения информации с моего сервера. Фрагмент моего кода реализации выглядит следующим образом:

-(void)getObjects
{
    //Instantiate the RestKit Object Manager
    RKObjectManager *sharedManager = [RKObjectManager sharedManager];

    //show the spinner
    [self showLoading];

    //call server with the resourcepath
    [sharedManager loadObjectsAtResourcePath:self.resourcePath delegate:self];
}

- (void)objectLoader:(RKObjectLoader*)objectLoader didLoadObjects:(NSArray*)objects 
{

    // handling in scenarios of empty arrays
    if ( [objects count]==0 ){
        [self hideLoading];
        if (emptyHandler){
            emptyHandler();
        }else{
            [self standardEmptyHandling];            
        }
        return;
    }

    // planned failure
    if ( [[objects objectAtIndex:0] isKindOfClass:[Failure class]]){
        NSAssert([objects count]==1,@"object returned is type failure, but there are more than one object in it");
        failureObject=[objects objectAtIndex:0];
        [self hideLoading];
        [self standardErrorHandling];
        return;
    }

    //return completion block to caller
    completionHandler(objects);

}

Однако могут быть случаи, когда возникает ошибка сервера или ошибка достижимости, из-за чего процесс продолжает попытки в течение длительного времени, прежде чем завершиться (счетчик будет отображаться в течение длительного времени_.

Есть ли способ установить время ожидания в моей реализации, чтобы я мог предложить пользователю предупреждение, чтобы повторить попытку, если сервер, например, не отвечает в течение 20 секунд?


person Zhen    schedule 10.10.2011    source источник
comment
Вы пытались установить свойство RKRequestQueue requestTimeout?   -  person mja    schedule 10.10.2011
comment
@mja нет, нет. Где я должен установить это свойство? В моем методе getObjects? Можете ли вы посоветовать мне, как я могу установить это в моей текущей реализации?   -  person Zhen    schedule 10.10.2011
comment
Только что нашел это - думаю, это еще не реализовано. github.com/RestKit/RestKit/issues/228   -  person mja    schedule 10.10.2011
comment
См. stackoverflow.com/questions/ 13855075/ для RestKit v0.20.x   -  person Kyle Clegg    schedule 11.11.2013


Ответы (2)


Теперь это было решено участниками RestKit в этом запросе на вытягивание https://github.com/RestKit/RestKit/pull/491 и может быть легко установлен следующим образом:

RKObjectManager *objectManager = [RKObjectManager objectManagerWithBaseURL:@"http://..."];
objectManager.client.timeoutInterval = 30.0; // 30 seconds
person pchap10k    schedule 27.03.2012
comment
в рестките 0.25 это больше не работает. любой совет? - person hariseldon78; 08.09.2015

Тайм-аут Apple по умолчанию для запросы URL составляют 60 секунд.

Вот обсуждение нерешенной проблемы в RestKit:

http://groups.google.com/group/restkit/browse_thread/thread/8672eba8b1901f5d

NSTimer может быть простым способом.

#pragma mark - RKRequestDelegate
- (void)requestDidStartLoad:(RKRequest *)request {
   [NSTimer scheduledTimerWithTimeInterval:20.0
       target:self
       selector:@selector(handleRequestTimeout)
       userInfo:nil
       repeats:NO];
}
person defvol    schedule 30.11.2011