检查Swift中序列化对象的数据类型

时间:2017-03-25 08:22:17

标签: ios swift

我有2个类(Client,Admin)继承自同一个父类(User)。

这3个类实现了NSCoding协议,因此我可以将它们作为数据存储在userdefaults中。

当我的应用程序启动时,我想将存储的数据反序列化为Swift 对象。

有没有办法知道存储数据属于哪种类型?

类似的东西:

let data = defaults.object(forKey: "loggedInUser") as? Data
if data is Client
     let client = NSKeyedUnarchiver.unarchiveObject(with: data) as? Client
if data is Admin
     let admin = NSKeyedUnarchiver.unarchiveObject(with: data) as? Admin

1 个答案:

答案 0 :(得分:1)

您可以查看

if let data = defaults.object(forKey: "loggedInUser") as? Data {
    let obj = NSKeyedUnarchiver.unarchiveObject(with: data)

    if obj is Client {
        let client = obj as! Client
    }

    if obj is Admin {
        let admin = obj as! Admin
    }
}