Сохранение Set в NSUserDefaults
Я сохраняю Set в NSUserDefaults с помощью следующего кода. Когда я закрываю приложение и запускаю его снова, оно ломается. С оператором NSUserDefaults происходит что-то странное, потому что оно работает нормально, если я пропущу этот код. Что может быть причиной?
var setOfStrings: Set<String>?
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
let onlyAtFirstLaunch = NSUserDefaults.standardUserDefaults().objectForKey("arrayFromSet") as? Array<String>
if onlyAtFirstLaunch == nil{
setOfStrings = Set<String>()
}else{
let arrayFromSet = NSUserDefaults.standardUserDefaults().objectForKey("arrayFromSet") as! Array<String>
setOfStrings! = Set(arrayFromSet)
}
}
func applicationDidEnterBackground(application: UIApplication) {
let arrayFromSet = Array(setOfStrings!)
NSUserDefaults.standardUserDefaults().setObject(NSArray(array: arrayFromSet), forKey: "arrayFromSet")
NSUserDefaults.standardUserDefaults().synchronize()
}
1 ответ
Решение
Эта строка кода вызывает раздавить:
setOfStrings! = Set(arrayFromSet)
Вы принудительно разворачиваете необязательную переменную, которая все еще равна нулю
Удалить "!" исправит проблему.
setOfStrings = Set(arrayFromSet)