У меня есть проблема, и я не знаю, как ее решить. У меня есть несколько перечислений, которые возвращают строку, используемую в любом месте проекта, в отдельном файле textPhrases.
Я хочу использовать некоторые из них, чтобы заполнить средство выбора (сегментированное).
Я пытаюсь понять, как я должен использовать и настроить элемент тега.
Я думал о наличии stati c var, который возвращает кортеж с [String: Int] [rawCaseValue, index ], но получите следующую ошибку - Тип '(String, Int)' не может соответствовать 'Hashable'; только типы struct / enum / class могут соответствовать протоколам
Вот пример моего кода. Второй инструмент выбора работает отлично, но я хочу изменить рефакторинг, чтобы использовать перечисление Strings.
// TextPhrases.swift
// Zinnig
import SwiftUI
enum SalutationClient: String, CaseIterable {
case noChoice = "…"
case sir = "Meneer"
case mrs = "Mevrouw"
case miss = "Mejuffrouw"
static let all = SalutationClient.allCases.map { $0.rawValue }
static var allIndexed : [(String, Int)]{
var tupleArray: [(String, Int)] = []
var ind : Int = 0
for salut in SalutationClient.all //allCases.map({ $0.rawValue })
{
tupleArray.append( (salut, ind))
ind += 1
}
return tupleArray
}
}
// PersonContentView.swift
// Zinnig
/// Main Person view
struct PersonContentView: View {
@State private var selectedSalutation = 0
/// next line will be removed and replace by an enum with Strings
@State private var dayPart: [String] = ["…", "ochtend", "middag", "avond", "nacht"]
@State private var selectedDayPart = 0
...
Form {
Picker(selection: $selectedSalutation, label: Text("Aanspreken met;")) {
ForEach ( SalutationClient.allIndexed, id: \.self ) { salutTuple in
Text((salutTuple.0)).tag((salutTuple.1))
}
}.pickerStyle(SegmentedPickerStyle())
Picker(selection: $selectedDayPart, label: Text("Selecteer een dagdeel")) {
ForEach(0 ..< dayPart.count) {
Text(self.dayPart[$0]).tag($0)
}
}.pickerStyle(SegmentedPickerStyle())
}
Ошибка: - Type '(String, Int)' не может соответствовать 'Hashable'; только типы struct / enum / class могут соответствовать протоколам
Как мне продолжить работать?
Спасибо