iOS 5 Data Storage: базовые данные, SQL или другие варианты? - PullRequest
0 голосов
/ 13 марта 2012

Я работаю над приложением для iPhone (iOS 5). Что мне нужно сделать, так это создать карту, используя двоичные данные, которые я получаю с сервера. Некоторые проблемы на самом деле работают довольно хорошо:

  • Я могу подключиться к серверу, отправлять запросы и получать с него двоичные данные
  • Я могу интерпретировать эти данные, создавать из них объекты (полигоны и пути) и рисовать их в представлении

Но теперь самое сложное. Карта, которую я создаю, должна быть масштабируемой и подвижной. Поэтому я должен отправить новые запросы на сервер и перерисовать карту. Это также хорошо работает, но данные, которые я уже получил, должны быть сохранены, потому что мне не следует запрашивать одни и те же данные с сервера дважды (например, если я уменьшаю, а затем снова возвращаюсь).

Наконец, вот мой вопрос: как лучше всего хранить мои данные? До сих пор я думал об использовании CoreData или SQLite. Есть ли еще лучшие решения? И какие данные я должен сохранить - двоичные данные или мои созданные объекты?

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

Ответы [ 2 ]

1 голос
/ 14 марта 2012

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

Я рекомендую прочитать Руководство по программированию основных данных Apple для больших объектов данных (BLOB) , в котором рассматриваются размеры и количество объектов. Некоторые выдержки ниже:

Точное определение «маленький», «скромный» и «большой» является гибким и зависит от использования приложения. Эмпирическое правило гласит, что объекты размером порядка килобайт имеют «скромный» размер, а объекты размером порядка мегабайт - «большой».

Для больших и маленьких больших двоичных объектов (и больших двоичных объектов) необходимо создать отдельную сущность для данных и создать отношение «один к одному» вместо атрибута.

Однако лучше, если вы сможете хранить большие двоичные объекты как ресурсы в файловой системе и поддерживать ссылки (например, URL-адреса или пути) на эти ресурсы. Затем вы можете загрузить BLOB по мере необходимости.

1 голос
/ 13 марта 2012

Основные данные - единственный путь.Базовые данные - это не система хранения, это граф объектов и постоянная среда, которые могут использовать SQlite для хранения данных.

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

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

Редактировать:

С Core Data Performance

Core Data - это многофункциональная и сложная структура управления графами объектов, способная работать с большими объемами данных.Хранилище SQLite может масштабироваться до терабайтных баз данных с миллиардами строк / таблиц / столбцов.Если ваши сущности не имеют очень больших атрибутов (хотя см. «Большие объекты данных (BLOB))» или большого количества свойств, 10000 объектов считается достаточно маленьким размером для набора данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...