Picker can't pick

I want to make a picker can choose the room where item put. But the picker is not work.

import SwiftUI

struct NewItem: View{

    @Environment(\.dismiss)var dismiss

    @ObservedObject var itemStore = ItemStore()

    @ObservedObject var roomStore = RoomStore()

    @State  var Title = ""

    @State  var Name = ""

    @State private var selectedRoom: Room? = RoomStore().rooms.first



    @State  var Notes = ""

    var body: some View{

        NavigationView {

            List {

                Section{

                    TextField("Title", text: $Title)

                    TextField("Details", text: $Notes)

                }header: {

                    Text("Detail")

                }

                

                

                Section{

                    Picker(selection: $selectedRoom, label: Text("Room")) {

                        ForEach(roomStore.rooms) { room in

                                Text(room.name).tag(room)

                            }.onReceive([selectedRoom].publisher.first()) { (room) in

                                self.selectedRoom = room

                            }.pickerStyle(MenuPickerStyle())

                    }



                }

            }.listStyle(.insetGrouped)

                .navigationBarTitle("New Item")

                .navigationBarTitleDisplayMode(.inline)

                .interactiveDismissDisabled()

                .toolbar{

                    ToolbarItem(placement: .navigationBarTrailing){

                        Button("Save") {

                            let newItem = Item(title: self.Title, note: self.Notes, isComplete: false, room: self.selectedRoom?.name ?? "")

                            self.itemStore.items.append(newItem)

                            self.dismiss()

                        }.disabled(Title == "")

                    }

                    

                    ToolbarItem(placement: .navigationBarLeading){

                        Button("Cancel"){

                            dismiss()

                        }

                    }

                }

        }

    }

}

Hello,

Your selectedRoom property has type Optional<Room>, but the values that you are tagging your Text with are likely non-optional Rooms.

Try this:

Text(room.name).tag(Optional(room))

And for more information about this, I recommend that you read the documentation for tag(_:).

Picker can't pick
 
 
Q