С помощью contentsOfURL можно объявить ограничение времени ожидания?

#ios #arrays #dictionary #reachability

#iOS #массивы #словарь #достижимость

Вопрос:

У меня есть приложение с динамическими данными, и метод обновления использует arrayWithContentsofURL и dictionaryWithContentsofURL для получения списков с сервера для обновления моей базы данных.

Моя проблема:

Когда на устройстве нет или работает некорректно подключение к Интернету, этот запрос просто пытается получить данные в течение примерно минуты, прежде чем прекратить попытки и продолжить выполнение.

Есть ли способ установить время ожидания для этой функции?

PS: Я знаю, что это, вероятно, худший способ сделать это, и я был бы рад, если бы кто-нибудь мог указать мне правильное направление 🙂 Я новичок в программировании на iOS, поэтому, пожалуйста, наберитесь терпения.

Ответ №1:

На мой взгляд, лучше всего использовать с ним NSMutableURLRequest .

У которого есть - (void)setTimeoutInterval метод. Из документации:

Интервал времени ожидания в секундах. Если во время попытки подключения запрос остается бездействующим дольше, чем интервал времени ожидания, считается, что время ожидания запроса истекло. Интервал времени ожидания по умолчанию составляет 60 секунд.

Предлагаю вам использовать NSURLRequest для отправки объекта запроса. Его функции делегирования вернут вам список.

Вы могли бы взять этот пример, примерно на полпути на этой странице он загружает объект json почти так же, как вы могли бы получить список.

Комментарии:

1. спасибо за быстрый ответ! Я понимаю, как установить время ожидания и URL-адрес с помощью NSMutableURLRequest, но как я мог на самом деле получить файл с этим? Не могли бы вы показать мне очень простой пример? Тем временем я поищу в Центре разработки пример кода

2. Извините за неполноту. Я предлагаю вам получить файл, отправив запрос NSMutableURLRequest по асинхронному URL-соединению. Я обновлю мой сервер.

3. Я попробую это .. и сообщу вам о результатах.. еще раз спасибо!

4. извините, это заняло у меня так много времени:(.. Я попробовал, но я немного застрял, отредактирую свой ответ выше с помощью кода, который не работает.

5. хм, я имел в виду, что я закончил редактировать свой вопрос, поэтому проблема все еще существует 🙂 извините за путаницу, не волнуйтесь, я приму ответ, как только это сработает!