(应该很简单)添加到Swift词典

时间:2016-02-18 11:18:05

标签: swift dictionary swift2

所以出于某种原因,我无法做到这一点......编码多年,Swift自发布以来,以某种方式从未出现问题。我错过了什么吗?

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

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

即使使用简单的var dict: [String : String] = [:]

,您也可以执行此示例

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

修改

类别定义

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

超级简单......

2 个答案:

答案 0 :(得分:1)

这非常有效......

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"

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

答案 1 :(得分:1)

确实非常简单

让我们看看

  

甚至做类别[0] = Category()仍然没有在字典中创建该元素,但也不会抛出任何错误。

在我的游乐场中,此代码可以正常工作,并且Category值已正确创建。

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

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

enter image description here