2010-01-27 3 views
0

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

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

ответ

1

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

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

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

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

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

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

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

0

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

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

для Bad Данные:

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

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

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