我尝试在Swift 4中实现一个实现if let data = NSData(contentsOfFile: path) {
do {
possibleObject = try NSKeyedUnarchiver.unarchiveTopLevelObjectWithData(data as NSData) as? CacheObject
}
catch {}
}
的AwesomeCache分支:
'unarchiveTopLevelObjectWithData' was obsoleted in Swift 4 (Foundation.NSKeyedUnarchiver)
但Xcode现在对我很生气,并说:
{{1}}
意思是,imo,因为它并没有告诉我它被替换了什么(如果有的话),而documentation更像是......空缺。
那我该怎么用?
答案 0 :(得分:6)
同意你的意见,NSData
不是Data
,改进可能是:
if let nsData = NSData(contentsOfFile: path) {
do {
let data = Data(referencing:nsData)
possibleObject = try NSKeyedUnarchiver.unarchiveTopLevelObjectWithData(data) as? CacheObject
}
catch {}
}
答案 1 :(得分:2)
哦,傻我。
NSData
不是Data
if let data = NSData(contentsOfFile: path) {
do {
possibleObject = try NSKeyedUnarchiver.unarchiveTopLevelObjectWithData(data as Data) as? CacheObject
// ^
}
catch {}
}
......让Xcode感到高兴。