在这段代码中,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将返回范围序列的索引,而不是值。