2017-02-25 63 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等 - 根據需要只需要更新的支持性和標籤名。