Сохранить словарь в userdefaults в swift 3 с помощью xcode 8
Я использую следующий код для сохранения объекта UserDefaults (ранее NSUserDefaults) с помощью xcode 8:
let defaults = UserDefaults.standard()
defaults.set(someObject, forKey: "someObject")
print(defaults.object(forKey: "someObject"))
someObject - это словарь, и я запускаю симулятор.
По какой-то причине это не сохраняет значение и печатается "nil". Удивление, если это проблема симулятора.
Ответы
Ответ 1
Эта проблема, похоже, вызвана наличием двух версий xcode/simulator.
Что для меня работало, так это удаление xcode 7 и просто сохранение xcode 8 beta в моей системе. Опорожнение мусора, сброс симулятора и запуск. Я также перезапустил компьютер.
После выполнения этих шагов симулятор может сохранять в UserDefaults.
Ответ 2
Для Swift 3
UserDefaults.standard.setValue(token, forKey: "user_auth_token")
print("\(UserDefaults.standard.value(forKey: "user_auth_token")!)")
Ответ 3
Хорошо работать с этим..!
let dict:[String:String] = ["key":"Hello"]
UserDefaults.standard.set(dict, forKey: "dict")
let result = UserDefaults.standard.value(forKey: "dict")
print(result!)
// Output -> { key:hello;}
Ответ 4
Это недокументированная, но известная проблема, что NSUserDefaults/UserDefualts не работает в симуляторе iOS 10, если ранее был запущен симулятор iOS 8/9.
Перезагрузив Mac и перейдя непосредственно на XCode 8, симулятор iOS 10 исправит эту проблему.
Смотрите также: Почему мое приложение не будет запущено в XCode 8 beta (8S128d)