Swift 小心字典Value等於nil(容易出錯)

ZY_FlyWay發表於2019-04-10

看書的時候看到
下面一段程式碼:

 var dicWithNils:[String:Int?] = [
    "one":1,
    "two":2,
    "none":nil
]

現在要求把two這個key的值變成nil

錯誤答案:

dicWithNils["two"] = nil

在這裡插入圖片描述

它將會把 “two” 這個鍵移除。

 


正確答案:

我們可以使用下面中的任意一個來改變這個鍵的值,你可以選擇一個你覺得清晰的方式,它們
都可以正常工作:

dictWithNils["two"] = Optional(nil)
dictWithNils["two"] = .some(nil)
dictWithNils["two"]? = nil
dictWithNils // ["none": nil, "one": Optional(1), "two": nil]

注意上面的第三個版本和其他兩個稍有不同。它之所以能夠工作,是因為 “two” 這個鍵已經存 在於字典中了,所以它使用了可選鏈的方式來在獲取成功後對值進行設定。現在來看看對於不 存在的鍵進行設定會怎麼樣:

 dictWithNils["three"]? = nil 
 dictWithNils.index(forKey: "three") // nil

你可以看到,當把 “three” 設定 nil 時,並沒有值被更新或者插入。

相關文章