Сохранение 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)
Другие вопросы по тегам