Swift 如何像访问字典一样访问类数据

Swift 如何像访问字典一样访问类数据,swift,class,dictionary,Swift,Class,Dictionary,我正在创建自己的类,该类存储与用户相关的信息。就像swiftyJSON框架一样,我希望像访问字典一样访问数据 例如 使用SwiftyJSON时,可以运行如下所示的代码: let x = JSON["x"] let y = JSON["y"].strVal let x = JSON["z"].intVal 我想做的是开一门如下的课: class User { private (set) public var DATA:[String:Any] public init(){}

我正在创建自己的类,该类存储与用户相关的信息。就像swiftyJSON框架一样,我希望像访问字典一样访问数据

例如

使用SwiftyJSON时,可以运行如下所示的代码:

let x = JSON["x"]
let y = JSON["y"].strVal
let x = JSON["z"].intVal
我想做的是开一门如下的课:

class User
{
    private (set) public var DATA:[String:Any]
    public init(){}
    public function login(username:String, password:String)
    {
        //Login code here
        self.DATA = loginResult
    }
}

let user = User()
user.login(username:"username", password:"password")
let name = user["name"].strVal
我怎样才能用swift写这封信呢?

您想使用:


您可能希望将数据存储为SwiftyJSON,这样就可以调用strVal等,只需根据需要更新backing属性和subscript签名即可。

为什么?类的好处是按名称访问属性,而不是按容易出错的键订阅,这还需要繁琐的类型转换和可选绑定。这是因为我的类将包含大量信息,有时键可能存在,有时键可能不存在,这意味着它们仍然需要检查。而且,这也是学习的过程。
class User
{
    private (set) public var DATA:[String:Any]
    public init(){}
    public function login(username:String, password:String)
    {
        //Login code here
        self.DATA = loginResult
    }

    subscript(key: String) -> Any? {
        return DATA[key]
    }
}

let user = User()
user.login(username:"username", password:"password")
let name = user["name"].strVal