【发布时间】:2015-09-18 12:38:13
【问题描述】:
我正在尝试编写代码以将 NSData 从 NSUserDefaults 中解压缩到自定义对象中,到目前为止我已经掌握了这个 -
class func itemForKey<T>(key: String) -> T?
{
let userDefaults = NSUserDefaults.standardUserDefaults()
var value : T?
if let dataObj = NSUserDefaults.standardUserDefaults().objectForKey(key) as? NSData
{
value = NSKeyedUnarchiver.unarchiveObjectWithData(dataObj) as? T
}
return value
}
不幸的是,它返回垃圾。如果我在取消归档时将 T 切换为类类型,则对象会正确创建 -
class func itemForKey<T>(key: String) -> T?
{
let userDefaults = NSUserDefaults.standardUserDefaults()
var value : T?
if let dataObj = NSUserDefaults.standardUserDefaults().objectForKey(key) as? NSData
{
let obj = NSKeyedUnarchiver.unarchiveObjectWithData(dataObj) as? CustomObject // correct at this point
但这显然违背了泛型的目的。
任何帮助等,非常感谢
【问题讨论】:
标签: swift generics nskeyedunarchiver