Помогите понять сохранение данных, пожалуйста.Основные данные по сравнению с списком - PullRequest
2 голосов
/ 02 ноября 2010

Каждое приложение, которое позволяет пользователям вводить данные, основанные на основных данных?

Я создал приложение для просмотра таблиц типа «список покупок», в котором вы называете список, а затем в подробном представлении добавляете элементы в список. Просто. Чего я не понимаю, так это, основываясь на книге по разработке для iphone, пример сохраняет данные в список с помощью словарей.

Я узнал, что он работает на симуляторе, но не на устройстве, потому что данные сохраняются в комплекте приложений, а не в каталоге документов (который был для меня новым!)

На устройстве приложение прекрасно работает, за исключением того, что оно не будет ДЕРЖАТЬ данные. Основные данные или sqlite - единственное решение? Каждое приложение, которое позволяет пользователям вводить данные, основано на основных данных?

Ответы [ 4 ]

3 голосов
/ 02 ноября 2010

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

CoreData - это структура для управления жизненным циклом объекта и графом.Он обеспечивает реализацию общих задач, таких как отслеживание и распространение изменений, обеспечение согласованности, проверка данных и т. Д.

Каркас CoreData является отдельным от уровня персистентности объектов и может использовать различные реализации сериализации, включая SQLite и XML (plists).

Подробнее см. Программирование основных данных - постоянные функции хранилища .

Решение о том, следует ли использовать CoreData, должно основываться на том, нужен ли вам какой-либо изфункции, которые он предоставляет.Если вам нужно сериализовать простые графы объектов без требований согласованности, вы можете использовать стандартный NSDictionary для сериализации ваших данных в простом файле plist в любой из папок, доступных для записи в приложении.В противном случае используйте CoreData и выберите правильное постоянное хранилище в зависимости от типа данных, которые вы будете хранить.

0 голосов
/ 12 марта 2013

Ваш вопрос очень важен для сообщества в том отношении, что
Вы задаете стратегический вопрос: какую технологию использовать, когда?

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

Списки свойств (* .plist) лучше всего подходят для одноразовых обновлений критических параметров среды. Например, пользователь может по желанию установить атрибуты .plist через приложение «Настройки IOS». Таким образом, пароли, настройки учетной записи, адреса электронной почты и параметры конфигурации могут быть легко установлены здесь. Этот тип данных сильно отличается от часто обновляемых транзакционных данных.

Постоянство XML тесно связано с .plist, поскольку список свойств (или .plist) сам по себе является файлом XML. Следовательно, вы можете загрузить поток XML-данных, а затем использовать их в своем приложении, используя ту же рубрику программирования, что и при настройке списка свойств. Следовательно, получение XML-данных из Интернета или загрузка такого списка прекрасно соотносится с постоянством XML.

AWS также предложила библиотеку AWS-Persistence , чтобы поддерживать синхронизацию ваших основных коллекций данных с их онлайн-базами данных. Это может быть полезным, если: 1) пользователь заполняет данные локально через Core Data, а затем лениво / оппортунистически загружает список. Для ваших целей (список покупок) это может обеспечить непосредственность для пользователя, предоставляя вашему серверу интересную возможность для работы с большими данными (анализируйте транзакции пользователей, предоставляйте рекомендации, продавайте рекламу и т. Д.).

Надеюсь, это поможет будущим посетителям воспользоваться богатством того, что предлагает IOS - мир!

0 голосов
/ 03 ноября 2010

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

Вы должны быть в состоянии записать свои данные в NSDictionary (или NSMutableDictionary), а затем записать их в каталог Documents вашего приложения, используя -writeToFile: atomically:

Чтение данных обратно также должно быть простым, используя -initWithContentsOfFile:.

Для кого-то, кто только начинает, я бы порекомендовал сделать его простым.Работать с NSDictionary очень просто, хотя вам нужно управлять такими вещами, как список списков и как называть списки, которые хранятся в каталоге Documents и т. Д.

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

0 голосов
/ 02 ноября 2010

Из того, что я видел в Интернете, вы можете использовать Core Data (который предоставляет вам опции SQLite, atomic и XML), вы можете использовать NSKeyedArchivers и NSKeyedUnarchivers (http://www.vimeo.com/1454094) или можете хранитьданные внутри локальной папки приложения (возможно, с использованием метода сериализации). Похоже, данные Core - лучшее решение, но более сложное для реализации. Для простого приложения, как и у вас, я думаю, что сериализация данных и их хранение влокальный каталог приложений был бы идеальным.

...