use*_*028 4 nsuserdefaults swift ios8
我正在为iOS编写一个Swift应用程序.我需要设置并稍后检索NSUserDefaults的UIColor对象.
我这样设置:
var userSelectedColor : NSData? = (NSUserDefaults.standardUserDefaults().objectForKey("UserSelectedColor") as? NSData)
if (userSelectedColor == nil) {
var colorToSetAsDefault : UIColor = UIColor.redColor()
var data : NSData = NSKeyedArchiver.archivedDataWithRootObject(colorToSetAsDefault)
NSUserDefaults.standardUserDefaults().setObject(data, forKey: "UserSelectedColor")
NSUserDefaults.standardUserDefaults().synchronize()
println("SET DEFAULT USER COLOR TO RED")
}
Run Code Online (Sandbox Code Playgroud)
但我似乎无法恢复它,因为在Swift中似乎缺少NSKeyedArchiver上的unarchive方法.
var userSelectedColorData: NSData? = (NSUserDefaults.standardUserDefaults().objectForKey("UserSelectedColor") as NSData)
var userSelectedColor : UIColor? = NSKeyedArchiver.unarchiveObjectWithData(userSelectedColorData)
Run Code Online (Sandbox Code Playgroud)
在Swift/iOS 8中执行此操作的正确方法是什么?
Unarchiving完成NSKeyedUnarchiver,而不是NSKeyedArchiver.as?如果保存的用户缺省值不是预期的类型,您还应该使用条件强制转换()来确保应用程序不会崩溃:
if let userSelectedColorData = NSUserDefaults.standardUserDefaults().objectForKey("UserSelectedColor") as? NSData {
if let userSelectedColor = NSKeyedUnarchiver.unarchiveObjectWithData(userSelectedColorData) as? UIColor {
println(userSelectedColor)
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1281 次 |
| 最近记录: |