SWIFT:更新值NSDictionary

时间:2014-09-10 10:31:12

标签: swift nsdictionary

此示例中的NSDictionary:

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

如何更新" B1"值或者我不应该使用NSDictionary来获得这个复杂的值吗?

谢谢

2 个答案:

答案 0 :(得分:1)

我会建议以下两个选项中的任何一个,但不是混合:

  1. 找到一种构建数据的方法,这样您就可以使用Swift Dictionary类的强大功能。
  2. 使用NSDictionary并忽略Swift的精彩内容。
  3. 几乎不用说:如果您的数据允许,那么选择第一个选项要好得多。在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"
}

你的模型非常令人困惑 - 我会推荐用于包装数据的类/类型,让你更好地了解你在每个级别处理的内容。

可能以这样的方式创建这个结构,即分层的字典是可变的,但它很痛苦,既不容易阅读也不易处理。