Лучший способ сохранить данные на iPhone - PullRequest
28 голосов
/ 21 ноября 2008

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

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

Ответы [ 7 ]

30 голосов
/ 21 ноября 2008

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

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

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

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

Для загрузки:

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

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

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

6 голосов
/ 21 ноября 2008

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

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

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

4 голосов
/ 21 ноября 2008

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

2 голосов
/ 16 марта 2010

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

1 голос
/ 06 февраля 2011

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

0 голосов
/ 21 ноября 2008

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

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

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