[英]Trouble Unpacking Dictionary of Dictionaries in Swift
我曾經嘗試在Swift中使用Dictionary時遇到魔鬼。 我創建了以下“字典詞典”,但無法解壓。
var holeDictionary = Dictionary<String,Dictionary<String,Dictionary<String,Int>>>()
我可以通過以下方法獲得第一本詞典:
var aDictionary = holeDictionary["1"]
但是嘗試訪問其中的下一個Dictionary會給我一個錯誤,如下所示:
var bDictionary = aDictionary["key"] // [String : Dictionary<String, Int>]?' does not have a member named 'subscript'
我知道字典的內容是什么,可以用println(aDictionary)進行驗證。 那么,如何才能深入了解“字典”呢?
Dictionary
上的鍵下標返回一個可選值,因為字典中可能不存在鍵/值對。
您需要使用if-let綁定或強制打開可選選項,然后才能對其進行進一步下標:
if let aDictionary = holeDictionary["1"] {
let bDictionary = aDictionary["key"]
}
編輯,以添加強制展開示例:
如果確定鍵"1"
存在,並且在鍵不存在時可以在運行時使用assert()
,則可以像這樣強制打開包裝:
let bDictionary = holeDictionary["1"]!["key"]
如果您確定鍵"key"
將存在,則可以這樣做:
let bDictionary = holeDictionary["1"]!["key"]!
根據快速文檔:
Because it is possible to request a key for which no value exists,
a dictionary’s subscript returns an optional value of the dictionary’s
value type
從字典中檢索項目時,將返回一個可選值。 處理案件的正確方法是:
var holeDictionary = Dictionary<String,Dictionary<String,Dictionary<String,Int>>>()
if let aDictionary = holeDictionary["1"] {
var bDictionary = aDictionary["key"]
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.