Какой лучший способ хранить долгосрочные данные в основных данных iPhone или SQLite?

StackOverflow https://stackoverflow.com/questions/3037015

  •  27-09-2019
  •  | 
  •  

Вопрос

Я работаю над приложением для iPhone, ориентируясь на 3.1.3, а затем SDK. Я хочу знать лучший способ хранить долгосрочные данные пользователя на iPhone без потери производительности, согласованности и безопасности.

Я знаю, что я могу использовать основные данные, Plist и SQL-Lite для хранения конкретных данных пользователей в пользовательских форматах. Но хотите знать, какой из них хорош, чтобы использовать без ущерба для производительности приложений и масштабируемости в ближайшем будущем.

Это было полезно?

Решение

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

(1) Если размер и сложность низки, и использование в первую очередь контролирует сам приложение, хранит данные в пользовательских по умолчанию, используя NsuserDefaults.

(2) Если размер маленький, а сложность может управляться массивами, словарями и т. Д. Затем хранить в Plist. Размер считается, потому что все данные, хранящиеся в Plist, загружаются в память в одном кусочке.

(3) Если размер очень большой, но сложность низкая, например, большое количество записей шаблонов, таких как система карт индекса, то используйте прямой SQL. SQL быстрее для поиска и сохранения простых и повторяющихся информации в очень большой БД.

(4) Если сложность очень высокая, используйте основные данные независимо от размера. Основные данные специально предназначены для управления сложной информацией. Если размер маленький, используйте магазин XML. Если он большой, используйте SQL Store.

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

Другие советы

Я должен не согласен на список Течзена. Номер 3 - это только правильный ответ, если вы имеете дело с устаревшей базой данных SQLite. Нет причин выбрать RAW SQLite по основным данным. Основные данные будут работать лучше почти в каждой ситуации и уменьшит объем кода, который вы должны написать на значительной сумме.

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

Что касается использования основных данных, вы всегда должны использовать задний конец SQLite (XML недоступен на iOS), за исключением наиболее экстремальных обстоятельств.

Короче говоря, если вы экономите одно значение, храните его в NSUserDefaults.

В противном случае используйте основные данные.

Обновлять

Существует одна единственная вещь, которая не может быть сделана с основными данными более исполнителя, чем Roam SQLite в настоящее время. Это способность обновлять значения одного столбца по десяткам тысяч строк. То есть потому, что для модификации строки основных данных загружает эту строку в память, а затем снова записывает его снова.

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

Основные данные будут превзойти какие-либо доступные данные, которые вы собираетесь написать сами, и он собирается обрабатывать писать и чтение из базового файла лучше, чем вы. Зачем восстанавливать колесо?

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top