2016-11-15 4 views
0

Я использую NSURLSession для интеграции сервисов. При загрузке изображения на сервер я хочу показать процент данных, которые были загружены на сервер. Для этого я создал пользовательский делегат в классе моей модели службы и вызвал этот делегат внутри делегата NSURLSession. Пожалуйста, проверьте мой код ниже.Пользовательский делегат не звонит из NSURLSessionDelegates

-(void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task didSendBodyData:(int64_t)bytesSent totalBytesSent:(int64_t)totalBytesSent totalBytesExpectedToSend:(int64_t)totalBytesExpectedToSend { 
NSLog(@" %lld %lld %lld %lu", bytesSent , totalBytesSent,totalBytesExpectedToSend,(unsigned long)task.taskIdentifier); 

float dataSent = (totalBytesSent/totalBytesExpectedToSend); 

NSLog(@"sent percentage : %0.2f",(dataSent * 100)); 
dispatch_async(dispatch_get_main_queue(), ^{ 

//_delegate is my custom delegate 
    [_delegate updateUploadedDataInfo:dataSent]; 
}); 
} 

Но, [_delegate updateUploadedDataInfo: dataSent] метод не вызывая здесь. Пожалуйста, предложите, где я делаю неправильно.

+0

Убедитесь, что ваш делегат не ноль. – stefos

+0

Кроме того, вы пытались вызвать его из своего запроса, чтобы узнать, работает ли он? –

+0

@stefos, делегат - ноль. можете ли вы предложить, как исправить эту проблему –

ответ

1

Просто добавьте свой объект модели обслуживания в качестве делегата. Например, предположим, что ваш класс модели servcice - это MyModel, а ваш опубликованный код находится в другом классе MyDownloader. В вашем MyModel классе добавить:

MyDonlowder *downlowder = [[MyDownloader alloc] init]; 
downlowder.delegate = self; 

сделать Кроме того, ваш класс MyModel соответствовать MyCystomDelegateProtocol и осуществлять необходимый метод updateUploadedDataInfo.

+0

Спасибо. Я его реализовал. Но все же я получаю эту проблему. –

+0

Возможно, ваш объект делегирования освобождается. Держите сильную ссылку на этот объект, чтобы сохранить его в живых. – stefos

+0

Спасибо. Я исправил эту проблему. –

Смежные вопросы