2014-09-10 45 views
0

的NSDictionary在這個例子:SWIFT:更新值的NSDictionary

var example: [Int:AnyObject] = [1:["A":"val","B":[1:["B1":"val"]]]] 

如何更新「B1」的值或者我應該不會使用的NSDictionary對於這個複雜的價值?

謝謝

回答

1

我建議以下任一兩個選項,而不是一個組合:

  1. 找到一個方法來組織你的數據,這樣你就可以使用雨燕Dictionary階級的權力。
  2. 使用NSDictionary並忽略斯威夫特的迷人。

幾乎不用說:如果您的數據允許,最好先去選擇第一個選項。在Dictionary中使用AnyObject不是一個好方法。請注意,您也可以使用struct來構建您的數據。

+0

爲什麼AnyObject在Dictionary中不是好方法?我可以這樣做:var示例:[Int:AnyObject] = [1:class()] – nothingtonil 2014-09-10 13:19:21

+1

代碼安全,請執行Swift!在Swift中,你已經明確地鍵入了集合,這導致了更多的代碼安全性和更少的錯誤。而不是猜測類型,它是編譯器強制執行的。最終讓你的生活變得更加輕鬆! – 2014-09-10 13:29:37

0

根本無法更新此結構,因爲它隱式地具有不可變類型。作爲一個測試:

var example: [Int: AnyObject] = [1:["A":"val","B":[1:["B1":"val"]]]] 

if let dict=example[1] as? NSMutableDictionary { 
    "Mutable dictionary" 
} else if let dict=example[1] as? NSDictionary { 
    "Immutable dictionary" // < THIS will be printed as a result 
} else { 
    "Other" 
} 

你的模型是非常令人迷惑 - 我建議類/類型的包裝你的數據,並給你,你與負責在每個級別什麼更好的主意。

可能創建此結構的方式使分層字典是可變的,但這是一種痛苦,既不容易閱讀,也不容易處理。

相關問題