У меня проблема при попытке использовать bool как часть быстрой структуры.
struct MapPrefs: Identifiable {
var id = UUID()
var name: String
var isShown: Bool
}
Массив этих prefs предоставляется хранилищем для представления swift-UI
class MapPrefsStore : ObservableObject {
var willChange = PassthroughSubject<Void, Never>()
@Published var MapPrefs: [MapPrefs] {
didSet { willChange.send(()) }
}
init(mapPrefs: [MapPrefs]) {
self.MapPrefs = mapPrefs
}
}
Представление настроек наблюдает за магазином и передает массив в представление ячеек
struct SettingsView: View {
@ObservedObject var mapPrefsStore = MapPrefsStore(mapPrefs: MapPrefsTestData)
var body: some View {
NavigationView {
List {
Section(header: Text("Map Preferences"), footer: Text("")) {
ForEach(mapPrefsStore.MapPrefs) { mapPrefs in
MapPrefsCell(mapPrefs: mapPrefs)
}
.onMove(perform: moveMap)
}
.background(Color.clear)
}
.navigationBarTitle(Text("Settings"))
.navigationBarItems(trailing: EditButton())
.listStyle(GroupedListStyle())
}
}
func moveMap(from source: IndexSet, to destination: Int) {
guard let sourceIndex = Array(source).first else { return }
mapPrefsStore.MapPrefs.insert(mapPrefsStore.MapPrefs.remove(at: sourceIndex), at: destination)
}
}
struct MapPrefsCell : View {
let mapPrefs: MapPrefs
var body: some View {
Toggle(isOn: mapPrefs.isShown) {
Text(mapPrefs.name)
}
}
}
}
это дает мне следующую ошибку:
Cannot convert value of type 'Bool' to expected argument type 'Binding<Bool>'
Я могу Я не понимаю, как предоставить вызываемой функции (MapPrefsCell) возможность доступа к свойству isShown. Пробовал разные комбинации добавления знака $.