Как устранить ошибку «Инициализатор» init (_: id: rowContent :) «требует, чтобы« (String, String) »соответствовал« Hashable »» при использовании списков в SwiftUI - PullRequest
1 голос
/ 20 октября 2019

Ниже приведен код:

struct DetailView: View {
let trafficRule: [(String, String)] = [("123","rule1"),("123","rule2")]
var body: some View {
List(trafficRule, id: \.self) { trafficRule in
            Text("\(trafficRule.0)")
            Spacer()
            Text("\(trafficRule.1)")
}
}

Появляется сообщение об ошибке для блока списка.

1 Ответ

0 голосов
/ 20 октября 2019

Кортежи не соответствуют Hashable in swift, и по этой причине их нельзя использовать в качестве элементов списка. Вместо того, чтобы использовать кортежи, рассмотрите возможность создания структуры для представления ваших элементов и приведите ее в соответствие с Hashable:

struct TrafficRule: Hashable {
    let name: String
    let rule: String
}
...