【问题标题】:Casting fails from unarchived data from NSKeyedUnarchiver, from Any? type to OIDAuthState来自 NSKeyedUnarchiver 的未归档数据的投射失败,来自 Any?键入 OIDAuthState
【发布时间】:2019-09-19 03:01:24
【问题描述】:

我正在尝试从 NSKeyedUnarchiver 取消存档已保存的对象。未归档的数据没问题,但我无法从 Any 中投射它?键入它的实际类型 (OIDAuthState)。

    public func loadState() {
        if let archivedAuthState = UserDefaults.standard.object(forKey: stateKeychainIdentifier) as? Data {
            if let authState = NSKeyedUnarchiver.unarchiveObject(with: archivedAuthState) {
                setAuthState(authState as! OIDAuthState)
            }
        }
    }

我也试过

if let authState: OIDAuthState = ....

if let authState = NSKeyedUnarchiver.unarchiveObject(with: archivedAuthState) as? OIDAuthstate { ...

这一切都失败了。 OIDAuthState 是一个桥接到 Swift 的 Objective-C 类,它继承自 NSObject 和 NSSecureCoding。

【问题讨论】:

    标签: ios swift


    【解决方案1】:

    解决方法是:

    NSKeyedUnarchiver.setClass(OIDAuthState.self, forClassName: "OIDAuthState")
    

    StackOverflow answer reference

    【讨论】:

      猜你喜欢
      • 2018-09-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-19
      • 1970-01-01
      • 2018-12-25
      • 1970-01-01
      • 2021-12-17
      相关资源
      最近更新 更多