【问题标题】:Unable to add an empty array to a dictionary in Swift [closed]无法在 Swift 中将空数组添加到字典 [关闭]
【发布时间】:2016-01-09 08:36:52
【问题描述】:

我想用 3 个空数组填充字典,我正在使用以下代码:

定义:

var items: [String:[SomeRecord]] = [:]

代码:

self.items["1"] = []
self.items["2"] = []
self.items["3"] = []

“items”在 3 次分配后似乎仍然为空。有什么想法吗?

【问题讨论】:

  • 因为你修改的是self.items而不是items
  • 这3行代码在一个类的方法中
  • "items" seems to remain empty after the 3 assignments 你是怎么查到的?检查计数?
  • 我目前测试了你的代码,似乎没问题....我有 3 个分配(3 个空数组)
  • @bashan,请编辑您的问题并显示您如何获取数组的代码。

标签: ios arrays swift dictionary


【解决方案1】:

将空数组添加到数组字典中是非常好的。您可以仔细检查您的字典是否确实包含键 "1""2""3" 的条目:

struct SomeRecord {
    var myRecord : String
}

class MyClass {

    var items: [String:[SomeRecord]] = [:]

    init() {
        self.items["1"] = []
        self.items["2"] = []
        self.items["3"] = []
    }
}

var myInstance = MyClass()

// simple check
print(myInstance.items.count) // 3

// detailed check
for (key, value) in myInstance.items {
    print("key: \(key), value: \(value)")
}
/* key: 2, value: []
   key: 1, value: []
   key: 3, value: []  */

// appending to empty array: OK
myInstance.items["1"]?.append(SomeRecord(myRecord: "record1.1"))
print(myInstance.items.count) // 3

// adding items to dictionary: OK
myInstance.items["4"] = [SomeRecord(myRecord: "record4.1")]
print(myInstance.items.count) // 4

请注意,.self 前缀在初始化程序中是多余的,除非您使用参数 to 或初始化程序中名为 items 的局部变量。所以在上面这个简单的例子中,.self 可以省略。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-11-15
    • 2017-01-15
    • 2014-09-02
    • 1970-01-01
    • 1970-01-01
    • 2018-03-22
    • 1970-01-01
    相关资源
    最近更新 更多