【发布时间】:2021-11-15 20:27:14
【问题描述】:
我想每次都用字典初始化一个结构。稍后,我将使用它的属性而不是字典的键和值——这似乎更容易。但是,当我尝试下面的代码时,它告诉我“从初始化程序返回而不初始化所有存储的属性”和“1. 'self.one' 未初始化”和“2. 'self.two' 未初始化”。我的问题是如何从字典中初始化一个结构,以便我基本上拥有一个包含字典内容的结构?或者怎么转成struct?
struct Blabla {
var one: String
var two: [Int]
init(three: [String: [Int]]) {
for i in three {
self.one = i.key
self.two = i.value
}
} ERROR! - Return from initializer without initializing all stored properties
}
【问题讨论】:
-
只是猜测,但我怀疑这与在 for 循环中设置
self.one、self.two的条件性质有关。 -
您到底想达到什么目的?
[String: [Int]](又名Dictionary<String, Array<Int>>)有多个键值对,每个键值对由一个字符串和多个整数(在一个数组中)组成。在您的代码中,如果three为空,则永远不会设置self.one和self.two,如果它有多个n条目,它们将被覆盖n-1次,因此它们的最终值是最后一个字典的键/值对(它本身是不确定的,因为字典没有定义的顺序)
标签: swift initialization