Лучший способ сохранить данные на iPhone

Я пишу приложение для iPhone, и мне нужно сохранить состояние моего приложения (5K или около того).

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

Для сохранения состояния NSUserDefaults – это путь. Я считаю, что, если не все, экземпляры данных приложения удаляются после обновления из-за проблем в AppStore. Они могут быть связаны с изменениями формата данных, но если вы используете только NSUserDefaults и стандартные объекты, сохраняющие plist (NSString, NSDictionary, NSNumber, NSArray, NSNumber и примитивы), вы должны быть в безопасности.

Есть простой способ сделать именно это. Чтобы сохранить:

NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults]; [prefs setObject:@"TextToSave" forKey:@"keyToFindText"]; 

Загружать:

 NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults]; NSString *textToLoad = [prefs stringForKey:@"keyToFindText"]; 

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

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

Это действительно зависит от того, что вы делаете, и от ваших потребностей.

Если это небольшой объем данных, NSUserDefaults – отличный способ. Вы также можете сохранить словарь или массив в папке «Документы приложений», а затем загрузить этот файл при запуске.

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

Я использую sqlite для хранения всех данных приложения и настроек. Чтобы убедиться, что обновления не уничтожают данные, убедитесь, что файл sqlite хранится в каталоге Documents приложения, который не перезаписывается обновлениями. Некоторые из примеров кода («SQLite Books», я думаю) Apple предоставляет код для обработки этого.

для небольших объемов данных NSUserDefaults – идеальное решение, если вам нужен специальный запрос sqlite данных, это путь. Эти два решения идеально подходят для хранения данных на устройстве, если вам нужна большая гибкость и возможности, вы можете рассмотреть удаленные данные, то есть веб-службы и базу данных сервера.

Вот ссылка на дискуссию, которая послужила хорошим примером того, как получить доступ к вашим данным и какой тип схем хранения будет более полезен при определенных обстоятельствах. Решение @Ben Gottlieb находится на мишени, я просто подумал, что этот вопрос добавит дополнительный ресурс. Надеюсь это поможет!

Наиболее распространенным способом сохранения состояния (данных, информации о приложении и т. Д.) Является использование Sqlite3 . Я не уверен, как это вытолкнет обновление, но возможно, что процесс обновления может перезаписать файл данных.

Другой вариант – использовать UserPrefs (NSUserDefaults). Опять же, я не уверен, что максимальный размер для этого, или даже если он будет подходящим для данных, которые вам нужно сохранить.

  • Что такое двойная звезда (например, NSError **)?
  • как удалить subviews из scrollview?
  • Преимущества, проблемы, примеры добавления другого UIWindow в приложение iOS?
  • Почему UINavigationBar крадет события касания?
  • NSOperation на iPhone
  • Как resize NSImage
  • Управление несколькими асинхронными соединениями NSURLConnection
  • UIPageViewController не возвращает никаких распознавателей жестов в iOS 6
  • Восстановить пре-iOS7 UINavigationController pushViewController animation
  • Msgstr "wait_fences: не удалось получить ответ: 10004003"?
  • Как я могу «разрезать» прозрачное отверстие в UIImage?
  • Interesting Posts

    Android: ошибка в launchMode = “singleTask”? -> стек активности не сохранен

    Я назвал папку символом для пробела, и теперь, когда я перешел на Windows, мне нужно переименовать его

    java.lang.OutOfMemoryError: превышен верхний предел GC

    Время загрузки Windows 10: ранее 20 секунд, теперь 6-8 X больше

    Android – извлечение файлов cookie после входа в webview

    Удаляет ли архивирование электронной почты с сервера обмена?

    Не удается найти указанный файл

    передать символьные строки в ggplot2 внутри функции

    Операция modulo на отрицательных числах в Python

    Как использовать собственный редактор ячеек JTable и средство отображения ячеек

    Существуют ли жизнеспособные альтернативы шаблону Singleton в GOF?

    Позиция курсора в текстовом поле (индекс символа, а не координаты x / y)

    Как автоматически автофокусировать камеру Android?

    Запросить tags EC2 изнутри экземпляра

    Как откатить транзакцию базы данных при тестировании служб с помощью Spring в JUnit?

    Давайте будем гением компьютера.