NSKeyedUnarchiver.unarchiveTopLevelObjectWithData 在 Swift 4 中已过时
NSKeyedUnarchiver.unarchiveTopLevelObjectWithData is obsoleted in Swift 4
我尝试在 Swift 4 中实现 unarchiveTopLevelObjectWithData
的 AwesomeCache 分支:
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)
意思是,imo,因为它没有告诉我它被替换了什么(如果有的话?),而且 documentation 相当......空缺。
那我用什么呢?
哦,我真傻。
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 {}
}
我尝试在 Swift 4 中实现 unarchiveTopLevelObjectWithData
的 AwesomeCache 分支:
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)
意思是,imo,因为它没有告诉我它被替换了什么(如果有的话?),而且 documentation 相当......空缺。
那我用什么呢?
哦,我真傻。
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 {}
}