簡體   English   中英

在Swift中解開字典詞典的麻煩

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM