Genérico SwiftUI Componente não é possível inferir Hashable para CustomStringConvertible

0

Pergunta

Eu quero criar um tipo genérico, que aceita qualquer coisa que esteja em conformidade com CustomStringConvertible e, em seguida, itera sobre os itens.

Aqui está um exemplo que destila baixo que o problema:

public struct Test<ItemType: CustomStringConvertible, Hashable>: View {
    var items: [ItemType]

    public var body: some View {
        ForEach(items, id: \.self) { item in
            Text("test")
        }
    }

}
let items: [String] = ["a", "b"]
let viewController = UIHostingController(rootView: Test(items: items))

Então, eu recebo um erro Generic struct 'ForEach' requires that 'ItemType' conform to 'Hashable'

e Generic parameter 'Hashable' could not be inferred

Então, o que estou fazendo de errado?

swiftui
2021-11-22 17:14:01
1

Melhor resposta

1

Você tem sintaxe problema:

public struct Test<ItemType: CustomStringConvertible & Hashable>: View {   // <<: here!
    var items: [ItemType]

    public var body: some View {
        ForEach(items, id: \.self) { item in
            Text("test")
        }
    }

}
2021-11-22 17:20:18

Em outros idiomas

Esta página está em outros idiomas

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................