Я пытаюсь использовать UserDefaults для постоянного сохранения логического значения. Это мой код:UserDefaults не сохраняется с Swift 3
public static var isOffline = UserDefaults.standard.bool(forKey: "isOffline") {
didSet {
print("Saving isOffline flag which is now \(isOffline)")
UserDefaults.standard.set(isOffline, forKey: "isOffline")
UserDefaults.standard.synchronize()
}
}
Почему не работает? В чем проблема в этом коде?
EDIT: Проблема заключается в том, что, когда я пытаюсь получить "isOffline"
ключ от UserDefaults
я всегда получаю false
.
EDIT 2: Я установил isOffline в методе .onChange строки (я использую Eureka как фреймворк для создания форм). Флаг сохраняет правильное значение в течение жизненного цикла приложения, но когда я его закрываю, это значение, вероятно, каким-то образом удаляется.
Каким образом ваш код не работает? Пожалуйста, покажите нам [mcve]. – Hamish
Также обратите внимание, что вам не нужно вызывать 'synchronize()' каждый раз, когда вы меняете значение в пользовательских значениях по умолчанию, - только тогда, когда вам определенно нужно * система для немедленного сохранения настроек пользователя по умолчанию (например, когда ваше приложение завершаться) - см. [этот вопрос и ответы] (http://stackoverflow.com/questions/40808072/when-and-why-should-you-use-nsuserdefaultss-synchronize-method). – Hamish
Да, вы правы. Но теперь проблема в том, что флаг isOffline всегда возвращает false –