2014-09-10 46 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" 
} 

你的模型是非常令人迷惑 - 我建议类/类型的包装你的数据,并给你,你与负责在每个级别什么更好的主意。

可能创建此结构的方式使分层字典是可变的,但这是一种痛苦,既不容易阅读,也不容易处理。

相关问题