无法使用 DatePicker 推断出错误通用参数“ID”

ara*_*ker 8 swiftui

我在具有以下代码的视图中有几个 DatePicker。每个 DatePicker 显示一个数字,因此“3”或“5”。因此,对于“3456”,我有 4 个可以单独更改的 DatePicker。

struct DigitPicker: View {

    var digitName: String
    @Binding var digit: Int

    var body: some View {
        VStack {
            Picker(selection: $digit, label: Text(digitName)) {
                ForEach(0 ... 9) {
                    Text("\($0)").tag($0)
                }
            }.frame(width: 60, height: 110).clipped()
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我收到错误消息“无法推断通用参数‘ID’”。所以我猜原因是 $digit 必须符合 Identifiable()。但是我该怎么做???

Mat*_*ini 8

编译器正在解决ForEach使用此扩展名的问题:

extension ForEach where Content : View {

    /// Creates an instance that uniquely identifies views across updates based
    /// on the `id` key path to a property on an underlying data element.
    ///
    /// It's important that the ID of a data element does not change unless the
    /// data element is considered to have been replaced with a new data
    /// element with a new identity. If the ID of a data element changes, then
    /// the content view generated from that data element will lose any current
    /// state and animations.
    public init(_ data: Data, id: KeyPath<Data.Element, ID>, content: @escaping (Data.Element) -> Content)
}
Run Code Online (Sandbox Code Playgroud)

而且,如您所见,它无法推断该init方法的第二个参数。

您可以使第二个参数显式以使编译器满意。

ForEach(0 ... 9, id: \.self) { // identified by self
   Text("\($0)").tag($0)
}
Run Code Online (Sandbox Code Playgroud)