NSKeyedUnarchiver.unarchiveTopLevelObjectWithData在Swift 4中已废弃

时间:2018-03-28 05:28:40

标签: ios swift xcode nskeyedunarchiver

我尝试在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更像是......空缺。

那我该怎么用?

2 个答案:

答案 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感到高兴。