Hey @kennedycraig,
I had many problems with pickers myself, so I have good news for you, it's an easy fix.
Wait for it.....
....."selection" shouldn't be optional.
Yep. Thats it.
Initial "selection" value, has to be one of the "player" values.
I modified your code example, to give you a small hint:
import SwiftUI
import CoreData
struct ContentView: View {
@FetchRequest private var players: FetchedResultsPlayer
@State private var selection: Player
init(moc: NSManagedObjectContext) {
let fetchRequest: NSFetchRequestPlayer = Player.fetchRequest()
fetchRequest.sortDescriptors = [NSSortDescriptor(keyPath: \Player.familyName, ascending: true)]
fetchRequest.predicate = NSPredicate(value: true)
self._players = FetchRequest(fetchRequest: fetchRequest)
do {
let firstPlayer = try moc.fetch(fetchRequest)
self._selection = State(initialValue: firstPlayer[0])
} catch {
fatalError("Uh, fetch problem...")
}
}
var body: some View {
VStack{
Picker("", selection: $selection){
ForEach(players) { (player: Player) in
Text(player.givenName ?? "")
.tag(player)
}
}
Text(selection.familyName ?? "No family name")
Text("\(players.count)")
}
}
}
Hope I helped,
Stay safe!
Nikos