2013-03-08 3 views
6

У меня есть приложение, которое требует Интернета для синхронизации веб-службы с локальным базовым данным db. Затем локальная выборка db используется для заполнения различных объектов для MapView и TableView в контроллере tabbar. Im, глядя на эти 2 сценария:Каков наиболее эффективный рабочий процесс для этого приложения iOS?

AppFlowLogic

Основное преимущество «А» является то, что я не должен предварительно загрузить приложение с базой данных, хотя ее небольшой дб (около 100 записей). Проблема в том, что она запутана. Если интернет-соединение отсутствует, в MapView пользователь видит карту, но refreshButton отключен. Так что это не проблема. Но пользователь все равно может пойти в tableview, и он увидит пустую таблицу.

Основным преимуществом «B» является то, что при предустановленном db приложение всегда будет иметь источник данных, готовый к построению и распечатке. Я действительно не знаю, как предварительно загружать приложение с помощью db.

Я как бы хочу пройти первый маршрут «А». Мой главный вопрос заключается в том, что сейчас я отключил refreshButton на MapView, так что он работает только после получения данных из Интернета ... что sortedArray пуст при запуске. Поэтому, если пользователь переходит к TableVC, он будет пустым. В этом случае пользователь должен сначала нажать кнопку обновления, прежде чем перейти к представлению таблицы.

Что является самым эффективным способом борьбы с этим?

+0

+1 приятное объяснение. – Dilip

+0

Кромки, они настолько больны для кодирования, но они настолько важны для пользователя. Я думаю, что «А» - ваш лучший вариант (мое мнение). Вы можете заблокировать использование всего приложения с помощью «Вам нужно загрузить данные, получить подключение к Интернету», если у вас нет исходных данных + нет соединения. Вы можете написать код для обработки сценария «без данных» на каждом экране, к которому пользователь может перейти, когда у него нет данных. В большинстве таблиц содержится случай «без данных», который добавляет строку, которая информирует пользователя. Лучший ответ зависит от ваших вариантов использования и требований и, как правило, предвзято по личным предпочтениям. – DBD

+0

Спасибо Dilip, я действительно хочу, чтобы был модуль xcode для обработки логики, чтобы показать вам, что это такое в соответствии с вашим кодом, потому что Im очень визуально. DBD, хотя я должен научиться кодировать сценарии первого запуска и т. Д., Я думаю, что у пользователя должно быть подключение к интернету. Я не настолько уверен в блокировании всего приложения, но по крайней мере сценарий «без данных». Хотя, это по сути то же самое, что блокирование всего приложения, потому что они не видят ничего, кроме оболочки. Опять же, в терминах UX, лучше позволить им что-то увидеть. Так что я был в тупике :(Думаю, мне нужно идти по жесткому маршруту. – marciokoko

ответ

2

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

Передайте свои записи как plist в комплекте вашего приложения. При первом запуске откройте plist и добавьте каждую запись в качестве нового объекта в основные данные. Этот тип «посева» происходит очень быстро. Просто создайте коллекцию (массив, словарь) для plist, затем перечислите ее, сопоставив ее с атрибутами managedObject.

Код, который показывает вам, как это сделать в видеоролике WWDC 2012 iCloud и Core Data (просто игнорируйте часть iCloud).

Затем, если после посева есть соединение, вы можете синхронизировать данные, которые будут обновлять/заменять/etc предварительно заполненные данные.

+0

Хорошо спасибо за preloaded data. Записи - это, в основном, магазины. Новая запись добавляется примерно каждый месяц или около того. – marciokoko

+0

Итак, я не могу отправить ее с предварительно загруженным базовым Data DB? – marciokoko

+0

Нет. Основные данные добавили в базу данных sqlite множество таблиц и связей и всевозможные специальные вещи, которые могут быть выполнены только тогда, когда вы действительно просматриваете основные данные, чтобы сделать это в своем приложении. Будьте осторожны с любыми сообщениями в блоге, которые показывают вам в противном случае! Но не беспокойтесь, посев не так плох, как вы думаете. –

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