此示例中的NSDictionary:
var example: [Int:AnyObject] = [1:["A":"val","B":[1:["B1":"val"]]]]
如何更新" B1"值或者我不应该使用NSDictionary来获得这个复杂的值吗?
谢谢
答案 0 :(得分:1)
我会建议以下两个选项中的任何一个,但不是混合:
Dictionary
类的强大功能。NSDictionary
并忽略Swift的精彩内容。几乎不用说:如果您的数据允许,那么选择第一个选项要好得多。在AnyObject
中使用Dictionary
并不是一个好方法。请注意,您还可以使用struct
来构建数据。
答案 1 :(得分: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"
}
你的模型非常令人困惑 - 我会推荐用于包装数据的类/类型,让你更好地了解你在每个级别处理的内容。
可能以这样的方式创建这个结构,即分层的字典是可变的,但它很痛苦,既不容易阅读也不易处理。