2016-01-19 125 views
-2

我有一個快速字典,我試圖訪問我的數組中的值。快速訪問字典中的值

我解釋我做如下所示:

["results": { 
Democrats =  { 
    percent = 67; 
    raw = 4; 
}; 
Republicans =  { 
    percent = 33; 
    raw = 2; 
}; 
"total_answers" = 6; 
}, "success": 1] 

我又字典來獲得這樣的:

let test = dictionary["results"] as! [String : AnyObject] 

["Democrats": { 
percent = 67; 
raw = 4; 
}, "Republicans": { 
percent = 33; 
raw = 2; 
}, "total_answers": 6] 

我可以訪問諸如值:

let testing = test["total_answers"] 

我想訪問百分比和原始值例如:

Democrats =  { 
percent = 67; 
raw = 4; 
}; 

百分比和原始密鑰是靜態的,但民主黨人是一個永遠不會相同的字符串。

回答

1

我不知道你使用的是什麼符號來表示你的字典,但它不能在斯威夫特編譯。

作爲類型的字典與[字符串:任何]將工作,但操縱數據將成爲類型投下的噩夢。您應該考慮使用所有值具有相同類型的常規結構。

例如(使用兩個值元組typealias):

typealias Votes = (percent:Int, raw:Int) 

var results = [ "Democrats" : Votes(percent:67, raw:4), 
       "Repubicans" : Votes(percent:33, raw:2), 
       "Totals"  : Votes(percent:100, raw:6) 
       ] 

let democratVotes = results["Democrats"]!.raw 
0

所以這裏let democrats:[String : Int] = test["Democrats"] as! [String : Int]將爲您提供新的字典,只包含

Democrats =  { 
percent = 67; 
raw = 4; 
};