swift - 保存数据后从firebase获取数据
问题描述
下面代码的第一部分工作正常,这意味着我可以根据需要将数据存储在 firebase 中。但是在'self.showResult = true'行之后,我还想获取数据并使'self.page'等于数据。不知何故,当我打印“页面”时,我总是得到“零”。谁能解释我在获取数据时犯了什么样的错误?
这是视图模型
import Firebase
import SwiftUI
class LoadPageViewModel: ObservableObject{
@Published var page: Page? = Page(id: "", speakerName: "", speakerImageUrl: "", speech: "", place: "", placeImageUrl: "", action: "", index: "")
let script: Script
@Published var showResult: Bool = false
@Published var index: Int = 0
@Published var showUpdate = false
init(script: Script){
self.script = script
}
func uploadPage1(speakerName: String, image1: UIImage, speech: String, place: String, image2:UIImage, action: String){
guard let user = AuthViewModel.shared.currentUser else {return}
imageUploader.uploadImage(image: image1, type: .post){speakerImageUrl in
imageUploader.uploadImage(image: image2, type: .post){placeImageUrl in
let pageId = UUID().uuidString
let data = [
"id": user.id ?? "",
"speakerName": speakerName,
"speakerImageUrl": speakerImageUrl,
"speech": speech,
"place": place,
"placeImageUrl": placeImageUrl,
"action": action,
"index": String(self.index)
]
Firestore.firestore().collection("scripts").document(self.script.id ?? "").collection("page\(self.index)").document(pageId).setData(data) {error in
if let error = error{
print("Error uploading script \(error.localizedDescription)")
return
}
}
self.showResult = true
if self.showResult{
Firestore.firestore().collection("scripts").document(self.script.id ?? "").collection("page\(self.index)").document(pageId).getDocument { (snapshot, _) in
self.page = try? snapshot?.data(as: Page.self)
}
}
}
}
}
}
这是模型
import FirebaseFirestoreSwift
struct Script: Identifiable, Decodable{
@DocumentID var id: String?
var name: String
var ownerUid: String
}
struct Page: Identifiable, Decodable{
@DocumentID var id: String?
var speakerName: String?
var speakerImageUrl: String?
var speech: String?
var place: String
var placeImageUrl: String
var action: String
var index: String
}
解决方案
推荐阅读
- python - 更快的算法来定制给定的数学表达式
- java - 如何在Java中读回一个字节?
- c++ - 重载链表中的赋值运算符
- python - 在 Python 中使用 else 函数时出现错误
- c++ - 如何使用 C++ 从 data.txt 文件中获取平均值?
- android - 如何在 Kotlin Multiplatform 项目的 iOS 模块中将字符串转换为字节数组?
- r - 无法在 R/RStudio 中使用正确的文件路径
- android - 程序类型已经存在:com.google.logging.type.HttpRequestProto [Android]
- python - Django:具有多个 fk 字段的 ManyToMany 字段
- c# - 使用 xNet(c#)在 Http 请求后更改代理服务器