如何在 Firestore 数据库 (SwiftUI) 中添加数据

问题描述 投票:0回答:1

我在将文档添加到 FireStore 数据库的设置步骤中遇到问题。

作为参考,这些是我的文件当前的样子:

FirestoreDemoApp.swift

import SwiftUI
import FirebaseCore
import FirebaseDatabase
import FirebaseFirestore


class AppDelegate: NSObject, UIApplicationDelegate {
  func application(_ application: UIApplication,
                   didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil) -> Bool {
      
      FirebaseApp.configure()

    return true
  }
}

@main
struct YourApp: App {
  // register app delegate for Firebase setup
  @UIApplicationDelegateAdaptor(AppDelegate.self) var delegate


  var body: some Scene {
    WindowGroup {
      NavigationView {
        ContentView()
      }
    }
  }
}

let db = Firestore.firestore()

ContentView.swift

import SwiftUI

struct ContentView: View {
    var body: some View {
        
        // Error on line below
        db.collection("wine").addDocument(data: ["year": 2017, "type": "pinot-noir", "label": "Peller Estates"])
        
        Text("hi")
    }
}

#Preview {
    ContentView()
}

在 ContentView.swift 的第 13 行(我标记了位置),我收到错误:

Static method 'buildExpression' requires that 'DocumentReference' conform to 'View'

我明白这意味着该行不符合视图,我需要一个视图,但我不明白我还能把这段代码放在哪里,因为我正在遵循仍在使用 AppDelegate 和 ViewController 的 FireStore 文档故事板中的格式(我认为),并且我不太确定如何调整当前的 SwiftUI ContentView 和 App.swift 格式

对于上下文,这是我遵循的指南: https://firebase.google.com/docs/firestore/manage-data/add-data#swift 连同 codeWithChris 视频(代码行来自其中): https://www.youtube.com/watch?v=qA9L3_cK9Z0&t=523s(时间戳8:43左右)

ios swift firebase google-cloud-firestore swiftui
1个回答
0
投票

您想要做的是在编译器期望

View
的地方执行函数。 SwiftUI 是一个用于构建用户界面的声明性框架,这意味着您可以描述界面应该是什么样子以及它应该如何表现。编译器不知道何时执行你的方法。
您想要执行的每个操作都需要在指定区域完成(例如按钮、
.task
修改器...)

您可以通过将方法调用包装到按钮中来修复当前代码

Button("Press me") {
    db.collection("wine").addDocument(data: ["year": 2017, "type": "pinot-noir", "label": "Peller Estates"])
}
© www.soinside.com 2019 - 2024. All rights reserved.