使用NSKeyedUnarchiver unarchivedObject(ofClass:from :)取消存档数组

使用NSKeyedUnarchiver unarchivedObject(ofClass:from :)取消存档数组,第1张

使用NSKeyedUnarchiver unarchivedObject(ofClass:from :)取消存档数组

您可以

unarchiveTopLevelObjectWithData(_:)
用来取消归档由归档的数据
archivedData(withRootObject:requiringSecureCoding:)
。(我相信现在还不建议使用。)

但是在显示一些代码之前,您最好:

  • 避免使用

    NSData
    Data
    改用

  • 避免使用

    try?
    可用于调试的错误信息

  • 删除所有不需要的演员表


试试这个:

private static func archiveWidgetDataArray(widgetDataArray : [WidgetData]) -> Data {    do {        let data = try NSKeyedArchiver.archivedData(withRootObject: widgetDataArray, requiringSecureCoding: false)        return data    } catch {        fatalError("Can't enpre data: (error)")    }}static func loadWidgetDataArray() -> [WidgetData]? {    guard        isKeyPresentInUserDefaults(key: USER_DEFAULTS_KEY_WIDGET_DATA), //<- Do you really need this line?        let unarchivedObject = UserDefaults.standard.data(forKey: USER_DEFAULTS_KEY_WIDGET_DATA)    else {        return nil    }    do {        guard let array = try NSKeyedUnarchiver.unarchiveTopLevelObjectWithData(unarchivedObject) as? [WidgetData] else { fatalError("loadWidgetDataArray - Can't get Array")        }        return array    } catch {        fatalError("loadWidgetDataArray - Can't enpre data: (error)")    }}

但是,如果您要制作新的应用,则最好考虑使用

Codable



欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/zaji/5642226.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存