NSKeyedUnarchiver.unarchiveTopLevelObjectWithData在Swift 4中已过时。

4

我尝试实现了一个AwesomeCache的分支,它在Swift 4中实现了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)

在我看来,应该使用Mean,因为它没有告诉我它被替换成了什么(如果有的话?),而文档相当空洞。

那么我应该使用什么呢?

2个回答

7

我同意你的观点,NSData 不是 Data,可以进行改进:

    if let nsData = NSData(contentsOfFile: path) {
        do {
            let data = Data(referencing:nsData)
            possibleObject = try NSKeyedUnarchiver.unarchiveTopLevelObjectWithData(data) as? CacheObject
        }
        catch {}
    }

3

哦,我好傻。

NSData 不是 Data

if let data = NSData(contentsOfFile: path) {
    do {
        possibleObject = try NSKeyedUnarchiver.unarchiveTopLevelObjectWithData(data as Data) as? CacheObject
                                                                                //       ^
    }
    catch {}
}

...让Xcode感到愉快。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接