Поиск основных данных против Plist - PullRequest
4 голосов
/ 17 июня 2011

Я ищу 350 словарных объектов.Будет ли эффективнее хранить данные в Core Data или в списке для поиска?

По сути, каждый объект - это словарь с 8 значениями ключа.350 объектов хранятся в сети в формате JSON.Я хотел бы загрузить канал при первом запуске приложения, а затем сохранить данные либо в основных данных, либо в списке.В приложении есть таблица с несколькими объектами по умолчанию.Затем пользователь может добавлять / удалять эти элементы.Когда пользователь нажимает кнопку «Добавить», я хочу отобразить пользователю все 350 объектов, а также предоставить механизм поиска.

В этом случае я должен сохранить канал JSON в Plist или использовать Core Data

Ответы [ 2 ]

5 голосов
/ 17 июня 2011

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

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

UPDATE:

Я думаю, вы, вероятно, захотите использовать Core Data по нескольким причинам. Во-первых, если каждый из этих объектов имеет одинаковые 8 ключей, вы захотите представлять каждый из них связанным объектом вместо словаря. Во-вторых, основные данные предназначены для поиска, сортировки и фильтрации. В-третьих, с NSFetchedResultsController не намного сложнее связать его с таблицей (с правильными индексами) или селектором скроллера. Если вы назовете свойства вашего NSManagedObject такими же, как ваши 8 ключей, будет довольно просто загрузить их из JSON, используя KVC.

Вы могли бы использовать plist, но вам придется больше работать.

3 голосов
/ 17 июня 2011

Как и во многих вещах в жизни, это зависит. Я бы сказал, что plist, вероятно, будет в порядке, если данные не слишком велики для хранения в памяти. Также, если данные статичны, я бы склонялся к plist. CoreData лучше использовать, если у вас много данных или много связанных объектов данных, и эти данные со временем меняются.

На основании ваших правок. Я согласен, что Core Data - это путь. Когда бы вы ни добавляли / обновляли / удаляли / сортировали / искали / фильтровали данные на частой основе, я предпочитаю Core Data, и это также рекомендуемый Apple метод.

...