У меня есть NSURLSession
, который выглядит так, и что я хочу сделать, это если данные не возвращаются, то я хочу, чтобы он повторил попытку снова и снова, до тех пор, пока не скажем 8 секунд или 3 попытки, а затем если по-прежнему ничего не будет, я верну ему никаких данных. Вот что у меня есть сейчас:Отправить несколько NSURLSession
NSURLSession *session = [NSURLSession sharedSession];
[[session dataTaskWithURL:[NSURL URLWithString:urlIn] completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
// handle response
//use my data
// if no data I want to try again?
}] resume];
Так что я хочу, чтобы он попробовал 3 раза или до 8 секунд. Как я мог это сделать,
Спасибо за помощь заранее.
Просто создайте свойства, чтобы отслеживать количество попыток и время первой попытки. Затем в счетчике попыток приращения блока завершения и проверьте, прошло ли время, прошедшее менее 8 секунд, и количество попыток было меньше 3, и если да, вызовите метод, который выполнил этот запрос еще раз. Вы действительно должны попробовать это сами. Не было намека на преступление, но мы здесь, чтобы помочь вам с вашим кодом, а не писать его для вас. – Rob
@Rob Кажется, что он может быстро загромождать. Вы знаете о более чистом способе сделать это? – MendyK
@MendyK - Если вы делаете это много, оберните его в асинхронный подкласс NSOperation, чтобы у вас был хороший инкапсулированный подход. Или на самом деле посмотрите на _why_, и он обработал его соответствующим образом (т. Е. Если сеть не читается, не пытайтесь повторить попытку, пока Reachability не сообщит вам, что сеть вернулась). Но они немного сложнее, и ОП, судя по всему, ничего не пытался, поэтому я не решаюсь идти туда, пока он не рассмотрит самые рудиментарные подходы. – Rob