Когда и почему происходит сбой метода синхронизации NSUserDefaults? - PullRequest
5 голосов
/ 07 октября 2009

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

Ответы [ 3 ]

5 голосов
/ 07 октября 2009

Метод synchronize является API-оболочкой более высокого уровня для функции CFPreferencesSynchronize. В документации ничего нет об этом, но я предполагаю, что synchronize просто возвращает результат CFPreferencesSynchronize. Поскольку эту функцию CoreFoundation можно использовать для синхронизации настроек хоста (администратора) и сети, в некоторых случаях она может не работать.

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

0 голосов
/ 20 января 2013

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

0 голосов
/ 07 октября 2009

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

...