保存设置为 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)
我正在使用以下代码将一个 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)