我在将文档添加到 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左右)
您想要做的是在编译器期望
View
的地方执行函数。 SwiftUI 是一个用于构建用户界面的声明性框架,这意味着您可以描述界面应该是什么样子以及它应该如何表现。编译器不知道何时执行你的方法。.task
修改器...)
您可以通过将方法调用包装到按钮中来修复当前代码
Button("Press me") {
db.collection("wine").addDocument(data: ["year": 2017, "type": "pinot-noir", "label": "Peller Estates"])
}