Hallo zusammen! In meiner Anwendung habe ich in CoreData Daten von Kunden, nun möchte ich einen Picker mit deren Namen erschaffen. Das Problem dabei ist, dass unabhängig davon welchen Namen ich auswähle, es ist als ob ich gar nichts ausgewählt hätte - es bleibt im SImulator immer nur der erste Name ausgewählt. Der Picker den ich zunächst als einfaches Beispiel ausprobiert habe, funktioniert:
Alles anzeigen
Mit CoreData scheint es aber nicht zu funktionieren, obwohl die Daten im Objekt Kunden vorhanden sind - wenn ich sie mit Text() innerhalb einer Schleife ausgebe - direkt unter dem Picker - ist alles da. Auch im Picker sind alle Namen da, nur kann ich nichts auswählen. Hier ist mein Code in zwei Varianten, die ich versucht habe. Variante 1:
Alles anzeigen
Sowie Variante 2:
Alles anzeigen
Bin sehr gespannt auf eure Ideen und danke im Voraus für jede Hilfe!
Quellcode
- struct Formularelemente: View {
- @State private var selectedOption = 0
- let options = ["Option 1", "Option 2", "Option 3"]
- var body: some View {
- VStack {
- Text("Selected Option: \(options[selectedOption])")
- Picker("Options", selection: $selectedOption) {
- ForEach(0..<options.count) { index in
- Text(options[index]).tag(index)
- }
- }
- .pickerStyle(MenuPickerStyle())
- }
- .padding()
- }
- }
Mit CoreData scheint es aber nicht zu funktionieren, obwohl die Daten im Objekt Kunden vorhanden sind - wenn ich sie mit Text() innerhalb einer Schleife ausgebe - direkt unter dem Picker - ist alles da. Auch im Picker sind alle Namen da, nur kann ich nichts auswählen. Hier ist mein Code in zwei Varianten, die ich versucht habe. Variante 1:
Quellcode
- struct Formularelemente: View {
- // Verbindung zur Umgebung, in der eine DB-Verbindung verankert ist:
- @Environment(\.managedObjectContext) private var viewContext
- // In der Abfrage kann in die eckigen Klammern ein Sortierkriterium wie nach Datum, ASC, DESC etc. rein
- @FetchRequest(sortDescriptors: [NSSortDescriptor(keyPath: \DBKunden.personencode, ascending: true)])
- var kunden: FetchedResults<DBKunden>
- @StateObject var mitarbeiter: Mitarbeiter
- @StateObject var infobogen = Infobogen()
- @State private var selectedKundeID: Int64? = 0
- var body: some View {
- ScrollView {
- VStack {
- // 1. Begrüssungszeile
- BackButton(mitarbeiter: mitarbeiter)
- Picker("Kunde", selection: $selectedKundeID) {
- ForEach(0..<kunden.count) { index in
- let kunde = kunden[index]
- Text(kunde.personencode!)
- .tag(index)
- }
- }
- .pickerStyle(MenuPickerStyle())
- if let selectedID = selectedKundeID {
- Text("Selected Kunde ID: \(selectedID)")
- }
- ForEach(kunden) {kunde in
- Text("ID vom \(kunde.personencode!) ist \(kunde.id)")
- }
- }
- }
- }
- }
Quellcode
- import SwiftUI
- import CoreData
- struct Formularelemente: View {
- // Verbindung zur Umgebung, in der eine DB-Verbindung verankert ist:
- @Environment(\.managedObjectContext) private var viewContext
- // In der Abfrage kann in die eckigen Klammern ein Sortierkriterium wie nach Datum, ASC, DESC etc. rein
- @FetchRequest(sortDescriptors: [NSSortDescriptor(keyPath: \DBKunden.personencode, ascending: true)])
- var kunden: FetchedResults<DBKunden>
- @StateObject var mitarbeiter: Mitarbeiter
- @StateObject var infobogen = Infobogen()
- @State private var selectedKundeID: Int64? = 0
- var body: some View {
- ScrollView {
- VStack {
- // 1. Begrüssungszeile
- BackButton(mitarbeiter: mitarbeiter)
- Picker("Kunde", selection: $selectedKundeID) {
- ForEach(kunden) { kunde in
- Text(kunde.personencode!)
- .tag(kunde.id)
- }
- }
- .pickerStyle(MenuPickerStyle())
- if let selectedID = selectedKundeID {
- Text("Selected Kunde ID: \(selectedID)")
- }
- ForEach(kunden) {kunde in
- Text("ID vom \(kunde.personencode!) ist \(kunde.id)")
- }
- }
- }
- }
- }
Bin sehr gespannt auf eure Ideen und danke im Voraus für jede Hilfe!