保存设置为 NSUserDefaults

saving Set to 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()
}

这行代码导致崩溃:

setOfStrings! = Set(arrayFromSet)

你正在强制展开一个 optional var 仍然是 nil;

删除“!”它会解决问题。

setOfStrings = Set(arrayFromSet)