代码之家  ›  专栏  ›  技术社区  ›  CalebK

ForEach中不能使用具有一般类型元素的数组“无法将类型为'[C]'的值转换为预期值…”`

  •  0
  • CalebK  · 技术社区  · 8 月前

    我猜测,如果错误更有帮助,这将是显而易见的,但现在这是我试图编译的代码。

    struct MultiselectFilterDropdown<C>: View where C : Identifiable, C.ID : Equatable, C.ID : CustomStringConvertible {
        var allItems: [C]
    
        var body: some View {
            VStack {
                ForEach(allItems) { item in
                    Text(item.description)
                }
            }
        }
    }
    

    我不知道为什么编译器无法解决这个问题。我看到它说它不能转换为 Range<Int> Binding<C> 所以我猜编译器甚至不知道ForEach的哪个初始化器最相关。

    1 回复  |  直到 8 月前
        1
  •  1
  •   lorem ipsum    8 月前

    这个 CustomStringConvertible 被误放了。

    struct MultiselectFilterDropdown<C>: View
        where C : Identifiable & CustomStringConvertible,
                C.ID : Equatable {
        var allItems: [C]
    
        var body: some View {
            VStack {
                ForEach (allItems) { item in
                    Text(item.description)
                }
            }
        }
    }
    

    绑定错误是拼写错误的明显迹象。