Základní Údaje výsledky do SwiftUI Picker zobrazení bez předběžného výběru možnost

0

Otázka

Jsem načítání dat z Core Data a jeho zobrazení v Picker, tento pohled je postaven v SwiftUI. Bojoval jsem v první výběr do práce od picker, ale zjistil, když jsem předvolit první objekt z mé přinesla výsledek, v pohledu je init, sběrač, výběr funguje.

To, co chci, je být schopen načíst své údaje do Picker, ale ne předvolit jeden z objektů. Znovu, když jsem aktualizovat kód níže, takže nic není předem zvolené, pak nemůžu vybrat nic. Jsem dostat na obrazovku možnosti, ale když jsem klepněte na jedno, nic se neděje, jen jsem dostala takový malý blesk na řadě. Musím hit na tlačítko Zpět se dostat zpět do formulářového zobrazení.

Nějaké nápady na to, jak udělat načítání Základních Údajů do Picker bez předběžného výběru jedné z možností práce?

-Díky!!!

import SwiftUI
import CoreData

struct RecordCreateview: View {
    @FetchRequest private var actions: FetchedResults<Actions>
    @State private var selectedAction: Actions

    init(context: NSManagedObjectContext) {
        let fetchRequest: NSFetchRequest<Actions> = Actions.fetchRequest()
        fetchRequest.sortDescriptors = [NSSortDescriptor(keyPath: \Actions.action, ascending: true)]
        fetchRequest.predicate = NSPredicate(value: true)
        self._actions = FetchRequest(fetchRequest: fetchRequest)
        do {
            let fetchResult = try context.fetch(fetchRequest)
            self._selectedAction = State(initialValue: fetchResult[0])
        } catch {
            fatalError("Problem fetching Action records.")
        }
    }
    
    var body: some View {
        NavigationView {
            Form {
                Picker("Select action", selection: $selectedAction){
                    ForEach(actions) { action in
                        if action.title == true {
                            Text("\(action.action!)").tag(action)
                        }
                    }
                }
            }
        }
    }
}
core-data ios picker swiftui
2021-10-26 20:12:53
1

Nejlepší odpověď

1

Můžete nastavit selectedAction na neexistující Actions v init(...) takhle:

self._selectedAction = State(initialValue: Actions(context: context))

že nebude nastavit pre-vybraný objekt v picker.

struct RecordCreateview: View {
    @FetchRequest private var actions: FetchedResults<Actions>
    @State private var selectedAction: Actions

    init(context: NSManagedObjectContext) {
        let fetchRequest: NSFetchRequest<Actions> = Actions.fetchRequest()
        fetchRequest.sortDescriptors = [NSSortDescriptor(keyPath: \Actions.action, ascending: true)]
        fetchRequest.predicate = NSPredicate(value: true)
        self._actions = FetchRequest(fetchRequest: fetchRequest)
        self._selectedAction = State(initialValue: Actions(context: context))  // <--- here
    }
    
    var body: some View {
        NavigationView {
            Form {
                Picker("Select action", selection: $selectedAction){
                    ForEach(actions) { action in
                        if action.title == true {
                            Text("\(action.action!)").tag(action)
                        }
                    }
                }
            }
        }
    }
}
2021-10-28 22:58:51

Nebude to jen vytvořit nový objekt pokaždé?
lorem ipsum

jo, to bude vytvářet nové Actions pokaždé, ale to ji nezachrání, pokud není konkrétně chcete, aby jej uložit. Můžete to zkontrolovat tím, že přidá .onAppear{ print("---> actions: \(actions.count)") }
workingdog

V jiných jazycích

Tato stránka je v jiných jazycích

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