2017-02-25 32 views
0

我正在制作自己的班级,用于存储与用户有关的信息。就像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?

+0

为什么?类的好处是通过名称而不是(容易出错)键来访问属性,同时还需要繁琐的类型转换和可选的绑定。 – vadian

+0

这是因为我的班级将持有相当多的信息,有时候钥匙可能存在,其他时间可能不存在,这意味着他们仍然需要检查。此外,这也是学习过程。 – iProgram

回答

1

您想使用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 

你可能想存储DATA为SwiftyJSON,这样你就可以调用它strVal等 - 根据需要只需要更新的支持性和标签名。