SwiftUI-绑定到选取器的变量和选取器的选定值不匹配



在这段代码中,repDuration是一个int,每当我在选择器中选择一个值时,repDurance都将是相同的值减去1,尽管标记等于数字。当我把repDuration设为String而不是Int时,问题就消失了,有人能解释一下,如果我想保持repDuration为Int,我如何获得匹配的值吗?

Picker("Duration", selection: self.$item.repDuration) {
ForEach(1..<366) { number in
Text("(number)").tag(number)
}
}

您要么需要迭代器符合.Identiable协议,要么在ForEach调用中指定一个id,如下所示:

Picker("Duration", selection: self.$item.repDuration) {
ForEach(1..<366, id: .self) { number in
Text("(number)").tag(number)
}
}

否则,swift将返回范围序列的索引,而不是值。

最新更新