Как лучше всего справиться с проблемами при инициализации модели в приложении для iphone? - PullRequest
0 голосов
/ 27 января 2010

Итак, предположим, у меня есть класс, у которого есть метод init, который делает что-то вроде ... извлекает некоторые данные из сети в формате xml и анализирует их, чтобы инициализировать некоторые из его свойств. Меня беспокоит, как мне справиться со случаем, когда сеть не работает или данные моего объекта XML плохие?

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

Ответы [ 2 ]

1 голос
/ 27 января 2010

Использование асинхронных сетевых запросов.

  1. Создать пользовательский интерфейс и показать его с либо фиктивная замена для фактические значения (например, изображения) или нет данные (например, пустая таблица).

  2. Затем создайте и отправьте запрос на обработчик данных и регистра, который получает вызывается с данными.

  3. При получении данных ваш обработчик с ними звонят.

  4. Вы анализируете данные и обновляете UI. В случае недействительности данных Теперь вы можете обновить интерфейс, чтобы сообщить Пользователь.

  5. Вы можете использовать тайм-ауты для отмены запросы в случае проблем с сетью и функции не возвращаются с данные в течение определенного времени.

В прошлом году был пример Класс Stanford CS193p (программирование для iPhone, но то же самое относится и к настольным приложениям) с отображением пустого пользовательского интерфейса и его обновлением при возврате данных. Вы можете найти ссылки на него в сети, иначе в этом году будет новый пример.

0 голосов
/ 27 января 2010

Для отключения сети у вас есть несколько вариантов

  • Оповещение пользователя о невозможности получения необходимых данных
  • Показать устаревшие (последние не загруженные?) Данные

Для неверных данных:

  • Оповещение пользователя
  • Попробуйте еще раз
  • Показать старые данные
  • Попробуйте исправить данные (отсутствует закрывающий тег? И т.д.)
  • Показать подмножество данных (может быть, вы можете извлечь что-то, что можно использовать?)

Что касается кодов ошибок, вы можете сделать:

  • Коды возврата, т.е. bad_data -1, no_network -2 и т. Д.
  • Вы можете создавать исключения, перехватывать их и отображать их в удобных для пользователя сообщениях на экране.
...