的NSDictionary在这个例子:SWIFT:更新值的NSDictionary
var example: [Int:AnyObject] = [1:["A":"val","B":[1:["B1":"val"]]]]
如何更新“B1”的值或者我应该不会使用的NSDictionary对于这个复杂的价值?
谢谢
的NSDictionary在这个例子:SWIFT:更新值的NSDictionary
var example: [Int:AnyObject] = [1:["A":"val","B":[1:["B1":"val"]]]]
如何更新“B1”的值或者我应该不会使用的NSDictionary对于这个复杂的价值?
谢谢
我建议以下任一两个选项,而不是一个组合:
Dictionary
阶级的权力。NSDictionary
并忽略斯威夫特的迷人。几乎不用说:如果您的数据允许,最好先去选择第一个选项。在Dictionary
中使用AnyObject
不是一个好方法。请注意,您也可以使用struct
来构建您的数据。
根本无法更新此结构,因为它隐式地具有不可变类型。作为一个测试:
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"
}
你的模型是非常令人迷惑 - 我建议类/类型的包装你的数据,并给你,你与负责在每个级别什么更好的主意。
它是可能创建此结构的方式使分层字典是可变的,但这是一种痛苦,既不容易阅读,也不容易处理。
为什么AnyObject在Dictionary中不是好方法?我可以这样做:var示例:[Int:AnyObject] = [1:class()] – nothingtonil 2014-09-10 13:19:21
代码安全,请执行Swift!在Swift中,你已经明确地键入了集合,这导致了更多的代码安全性和更少的错误。而不是猜测类型,它是编译器强制执行的。最终让你的生活变得更加轻松! – 2014-09-10 13:29:37