【问题标题】:(Should be simple) Adding to Swift dictionary(应该很简单)添加到 Swift 字典
【发布时间】:2016-02-18 11:18:05
【问题描述】:

所以由于某种原因我不能这样做......多年来一直在编码,Swift 自从它发布以来,不知何故这从来都不是问题。我错过了什么吗?

var categories: [Int : Category] = [:]

现在我无法执行 categories.setObject() 之类的操作,甚至执行 categories[0] = Category() 仍然不会在字典中创建该元素,但也不会引发任何错误。

即使是简单的var dict: [String : String] = [:],你也可以做这个例子

注意:我意识到这可能是一个非常简单的问题,但我已经完成了我的挖掘......我不只是在这里发帖,因为我懒得做研究。哈哈

编辑

类别定义

struct Category {
    var id: Int!
    var name: String!
}

超级简单...

【问题讨论】:

  • setObject() 可被动态类型的字典访问。我认为它仅适用于 NSMutableDictionary。
  • 确实对我有用:var dict: [String: String] = [:]; dict["One"] = "1"; print(dict) // Prints ["One": "1"]
  • @AntonBronnikov 嗯......只是为了确定 - 你在 Swift2 上对吗?
  • 是的。准确地说,它是“Swift 2.2-dev(LLVM 3ebdbb2c7e,Clang f66c5bb67b,Swift 42591f7cba)”。
  • 您的Category 是否有可失败的初始化程序?难道Category() 只是简单地返回nil

标签: swift dictionary swift2


【解决方案1】:

确实很简单

让我们看看

即使执行 categories[0] = Category() 仍然不会在字典中创建该元素,但也不会引发任何错误。

在我的操场上,这段代码运行良好,Category 值已正确创建。

struct Category {
    init() {
        print("init Category")
    }
}

var categories: [Int : Category] = [:]
categories[0] = Category()

【讨论】:

    【解决方案2】:

    这很好用……

    struct Category {
        var id: Int!
        var name: String!
    }
    var categories: [Int : Category] = [:] // [:]
    categories[0] = Category() // Category
    print("\(categories)") // "[0: Category(id: nil, name: nil)]\n"
    

    你如何检查存在?您在属性中使用了 !,然后没有为它们提供值 - 这可能是问题所在。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多