Я использую api NSUserDefaults
api -registerDefaults
api для регистрации заводских настроек моего приложения. Все отлично подходит для первой версии приложения. Но когда я предоставляю обновление для приложения iPhone, у меня есть 3 критерия:Гибкость NSUserDefaults для обновлений версий
- Пользовательские настройки приложения старой версии должны быть неповрежденными.
- Следует применять дополнение к заводским настройкам, относящимся к новой версии.
- Предоставление гибкости при проектировании будущих обновлений версии, чтобы пользовательские настройки по умолчанию менялись на основе новой версии.
Api -registerDefaults
не регистрирует заводские настройки по умолчанию в обновлениях новой версии, поскольку файл plist, содержащий пользовательские настройки, уже существует в/Library/Preferences песочницы. И если мы сбросим настройки с новыми заводскими настройками, пользовательские предпочтения предыдущей версии будут потеряны.
Я думаю, что для таких случаев должен быть шаблон дизайна, так как вообще мы можем справиться с такими ситуациями? Разве Apple не предоставляет какой-либо неотъемлемой поддержки для этого? Или мне не хватает некоторых ссылок, я пробовал работать без каких-либо успехов.
Спасибо, Радж
Это проблема, с которой я столкнулся. Я подумал о вашем подходе, явно поддерживая bool, чтобы указать, что обновление выполнено, скорее я попытался поддерживать версию приложения в пользовательских настройках по умолчанию. Теперь еще одно препятствие: в моей базовой версии приложения есть 10 элементов, если я добавлю 2 элемента в v 1.1 и еще 2 в v1.2, и если пользователь попытается напрямую обновить v1.2, не пройдя через v1.1 , он пропускает элементы v1.1, поэтому я бы внутренне обновил v1.1, а затем до v1.2 в таких случаях. Но так ли это стандарт? Как другие приложения решают эту проблему? Thanx –
Я не знаю, как «стандартный» вы бы это рассмотрели, но я использовал этот шаблон хотя бы один раз раньше. Еще один более простой способ сделать это - просто сдуть любое пользовательское переупорядочение, которое сделал пользователь, и просто установить весь массив при обновлении, а не просто добавлять новые объекты по частям. Меньше удобство для пользователя. –
Да, второй подход менее удобен для пользователя, кроме того он также взорвет все остальные настройки. Лучше бы я выбрал первый подход. Спасибо за предложения. –