Ios NSKeyedUnachiver.unarchiveTopLevelObjectWithData在Swift 4中被淘汰
我尝试实现AwesomeCache的分支,该分支在Swift 4中实现了Ios NSKeyedUnachiver.unarchiveTopLevelObjectWithData在Swift 4中被淘汰,ios,swift,xcode,nskeyedunarchiver,Ios,Swift,Xcode,Nskeyedunarchiver,我尝试实现AwesomeCache的分支,该分支在Swift 4中实现了unarchiveTopLevelObjectWithData: if let data = NSData(contentsOfFile: path) { do { possibleObject = try NSKeyedUnarchiver.unarchiveTopLevelObjectWithData(data as NSData) as? CacheObject } catch
unarchiveTopLevelObjectWithData
:
if let data = NSData(contentsOfFile: path) {
do {
possibleObject = try NSKeyedUnarchiver.unarchiveTopLevelObjectWithData(data as NSData) as? CacheObject
}
catch {}
}
但是Xcode现在对我很生气,说:
'unarchiveTopLevelObjectWithData' was obsoleted in Swift 4 (Foundation.NSKeyedUnarchiver)
我的意思是,因为它没有告诉我它被什么替换了(如果有什么的话?),而且它相当。。。空置的
那我用什么来代替呢?哦,我真傻
NSData
不是Data
if let data = NSData(contentsOfFile: path) {
do {
possibleObject = try NSKeyedUnarchiver.unarchiveTopLevelObjectWithData(data as Data) as? CacheObject
// ^
}
catch {}
}
…使Xcode感到高兴。同意您的看法,
NSData
不是Data
,改进可能是:
if let nsData = NSData(contentsOfFile: path) {
do {
let data = Data(referencing:nsData)
possibleObject = try NSKeyedUnarchiver.unarchiveTopLevelObjectWithData(data) as? CacheObject
}
catch {}
}