我正在尝试编写代码以将 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
但这显然违背了泛型的目的。
任何帮助等,非常感谢