Я хочу иметь оператор If
, который позволяет мне определить, есть ли у меня NSUserDefaults, сохраненные или нет.Как узнать, сохранены ли NSUserDefaults?
ответ
Я думаю, вопрос заключается в том, задан ли конкретный объект в пользовательских значениях по умолчанию, а не в знании того, были ли данные успешно сохранены.
По умолчанию пользователи - это просто словарь с точки зрения его API, поэтому вы можете попытаться получить объект для данного ключа. Если возвращенный объект не равен nil
, то для этого ключа явно хранится что-то. И наоборот, если возврат nil
, то ничего не было сохранено, и вы должны, вероятно, загрузить объект по умолчанию или выполнить какой-либо другой случай.
Точка NSUserDefaults
заключается в том, что она прозрачно сохраняет ваши данные без вашего вмешательства, поэтому вы не можете спросить ее, сохранила ли она данные или нет.
Однако вы можете принудительно сохранить его, позвонив по телефону [[NSUserDefaults sharedUserDefaults] synchronize];
, который возвращает BOOL
, указав, было ли успешное сохранение. Документация для этого метода говорит:
Поскольку этот метод автоматически вызывается через определенные промежутки времени, использовать этот метод, только если вы не можете ждать для автоматической синхронизации (для Например, если ваше приложение о к exit), или если вы хотите обновить значение по умолчанию на том, что находится на диске, даже , хотя вы не внесли никаких изменений.