swiftUI 选择器“通用结构‘选择器’要求‘字符串’符合‘视图’”

lui*_*uis 2 swift swiftui

我按照此链接接受的答案进行操作

如何在 SwiftUI 中使 Picker 与 ObservedObject 一起工作?

但我在结构 GameListPicker 中收到消息“通用结构‘Picker’要求‘String’符合‘View’”

import SwiftUI

struct GameListPicker: View {
    
    @ObservedObject var gameListViewModel = GameListViewModel()
    @State private var selectedGameList = ""
    
    var body: some View {
     Picker(selection: $selectedGameList, label: ""){
            ForEach(gameListViewModel.gameList) { gameList in
                Text(gameList.gameName)
            }
        }
     .onAppear() {
            self.gameListViewModel.fetchData()
            }
    }
}
Run Code Online (Sandbox Code Playgroud)

游戏列表视图模型

import Foundation
import Firebase

class GameListViewModel: ObservableObject{
    
    @Published var gameList = [GameListModel]()
    let db = Firestore.firestore()
    
    func fetchData() {

        db.collection("GameData").addSnapshotListener {(querySnapshot, error) in
        guard let documents = querySnapshot?.documents else {
          print("No documents")
          return
        }

        self.gameList = documents.map { queryDocumentSnapshot -> GameListModel in
          let data = queryDocumentSnapshot.data()
          let gameName = data["GameName"] as? String ?? ""
            return GameListModel(id: gameName, gameName: gameName)
        }
      }
    }
}
Run Code Online (Sandbox Code Playgroud)

和游戏列表模型

import Foundation

struct GameListModel: Codable, Hashable,Identifiable {
    
    var id: String
    //var id: String = UUID().uuidString
    var gameName: String
    
}
Run Code Online (Sandbox Code Playgroud)

我无法确定问题所在

Bib*_*cob 5

您应该提供一个符合中View参数协议的参数。label:Picker

代替:

Picker(selection: $selectedGameList, label: "") {
Run Code Online (Sandbox Code Playgroud)

和:

Picker(selection: $selectedGameList, label: Text("")) {
Run Code Online (Sandbox Code Playgroud)