NSKeyedUnarchiver.unarchiveTopLevelObjectWithData 在 Swift 4 中已过时
Posted
技术标签:
【中文标题】NSKeyedUnarchiver.unarchiveTopLevelObjectWithData 在 Swift 4 中已过时【英文标题】:NSKeyedUnarchiver.unarchiveTopLevelObjectWithData is obsoleted in Swift 4 【发布时间】:2018-09-06 16:19:42 【问题描述】:我尝试在 Swift 4 中实现一个 AwesomeCache 的分支,它实现了 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)
意思是,imo,因为它没有告诉我它被替换为什么(如果有的话?),而且documentation 相当......空置。
那我用什么代替呢?
【问题讨论】:
【参考方案1】:同意你的观点,NSData
不是 Data
,改进可能是:
if let nsData = NSData(contentsOfFile: path)
do
let data = Data(referencing:nsData)
possibleObject = try NSKeyedUnarchiver.unarchiveTopLevelObjectWithData(data) as? CacheObject
catch
【讨论】:
【参考方案2】:哦,我真傻。
NSData
不是Data
if let data = NSData(contentsOfFile: path)
do
possibleObject = try NSKeyedUnarchiver.unarchiveTopLevelObjectWithData(data as Data) as? CacheObject
// ^
catch
...让 Xcode 开心。
【讨论】:
以上是关于NSKeyedUnarchiver.unarchiveTopLevelObjectWithData 在 Swift 4 中已过时的主要内容,如果未能解决你的问题,请参考以下文章