【问题标题】:How to edit Arrays in NSDictionary如何在 NSDictionary 中编辑数组
【发布时间】:2015-11-08 01:42:22
【问题描述】:

我的代码中有 [String, AnyObject] 字典,如下图所示,我想修改“boolArray”中的值,但 Xcode 抛出“无法分配给‘AnyObject’类型的不可变表达式”错误。

有什么简单的方法可以改变这个“boolArray”的值吗?

var dictionary : NSDictionary = [
        "foo" : 0,
        "bar" : "string",
        "boolArray" : [false, false, false, false, false, false, false, false]  
    ]

dictionary["boolArray"]![0] = true // [!] Cannot assign to immutable expression of type 'AnyObject!'

【问题讨论】:

  • 你不应该在 Swift 中使用 NSDictionary。 Dictionary 是 swift 中一个更强大的类,默认情况下是可变的。此外,它自动与目标c桥接。无论如何,下面给出的答案将解决您的问题。

标签: ios swift swift2


【解决方案1】:

Abizern 的回答部分正确。您需要将 NSDictionary 更改为 NSMutableDictionary。你也必须改变

dictionary["boolArray"]![0] = true

dictionary["boolArray"]!.setObject(true, atIndex: 0)

【讨论】:

  • 当我在 Playground 中尝试此操作时,我得到以下信息:Execution was interrupted, reason: signal SIGABRT - 你知道为什么会发生这种情况吗?
  • 在我的环境中完美运行。谢谢!
【解决方案2】:

问题在于你的类型。 NSDictionary 是不可变的。尝试将其声明为 NSMutableDictionary

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-11-22
    • 2023-01-17
    • 1970-01-01
    • 2011-07-07
    • 2011-08-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多