ios - SwiftUI - 使用 Firebase 实时数据库数据更新视图
问题描述
为什么我不能Text
使用 Firebase 中的适当数据进行更新?我找不到 Firebase Realtime DB 的任何教程,我看到的只是 Firestore。这是我第一次使用iOS开发,请帮助我。
我有以下代码:
struct SceneView: View {
@Binding var showSceneView: Bool
var databaseRef : DatabaseReference
@State var quoteBookDaily : QuoteBook?
var body: some View {
ZStack {
GeometryReader { geomtry in
ZStack {
Text(self.quoteBookDaily?.title ?? "Make sure you are connected to the internet.").font(Font.custom("ShadowsIntoLight", size:30)).multilineTextAlignment(.center).lineSpacing(5).padding()
VStack {
HStack {
Button(action:{self.backPressed()}) {
Image("icons8-back-24").renderingMode(.original).resizable().aspectRatio(contentMode: .fit).frame(width: 24, height: 24, alignment: .leading)
}.padding()
Spacer()
Button(action:{self.takeScreenshot()}) {
Image("icons8-screenshot-26").renderingMode(.original).resizable().aspectRatio(contentMode: .fit).frame(width: 26, height: 26, alignment: .leading)
}.padding()
}
Spacer()
}
}
}
}
}
init(showSceneView : Binding<Bool>) {
self._showSceneView = showSceneView
self.databaseRef = Database.database().reference()
self.initDataFromFirebase()
}
func backPressed() {
self.showSceneView = false
}
func takeScreenshot() {
}
func initDataFromFirebase() {
let quoteBook = QuoteBook()
databaseRef.observeSingleEvent(of: .value, with: {(snapshot) in
let value = snapshot.value as? NSDictionary
let msg1 = value?["msg1"] as? String ?? " "
let msg2 = value?["msg2"] as? String ?? " "
let msg3 = value?["msg3"] as? String ?? " "
let msg4 = value?["msg4"] as? String ?? " "
let msg5 = value?["msg5"] as? String ?? " "
let msg6 = value?["msg6"] as? String ?? " "
let msg7 = value?["msg7"] as? String ?? " "
let msg8 = value?["msg8"] as? String ?? " "
let msg9 = value?["msg9"] as? String ?? " "
let msg10 = value?["msg10"] as? String ?? " "
let msg11 = value?["msg11"] as? String ?? " "
let name = value?["name"] as? String ?? " "
quoteBook.msg?.append(msg1)
quoteBook.msg?.append(msg2)
quoteBook.msg?.append(msg3)
quoteBook.msg?.append(msg4)
quoteBook.msg?.append(msg5)
quoteBook.msg?.append(msg6)
quoteBook.msg?.append(msg7)
quoteBook.msg?.append(msg8)
quoteBook.msg?.append(msg9)
quoteBook.msg?.append(msg10)
quoteBook.msg?.append(msg11)
quoteBook.title = name
}) { (error: Error?) in
if let error = error {
print("Error : \(error).")
} else {
self.quoteBookDaily = quoteBook
}
}
}
}
struct SceneView_Previews: PreviewProvider {
static var previews: some View {
SceneView(showSceneView : .constant(false))
}
}
我的QuoteBook
班级:
import SwiftUI
class QuoteBook : ObservableObject {
@Published var msg : [String]? = []
@Published var title : String?
}
我的 Firebase 数据库看起来像这样: link to screenshot
解决方案
推荐阅读
- mysql - 当 mysql 将事务 id 分配给事务时
- python - 在数据集中保留前 n 个模式项(timeserie)
- ruby-on-rails - 如何使用列数组获取对象的值?
- python - 不断地读取一个文件最终会损坏我的硬盘吗?
- r - 将 DTedit 与“新行”ActionButton 集成
- actionscript-3 - 调用函数时是否可以忽略变量?(动作脚本3)
- ios - 如何访问传入推送通知的值
- flutter - 如何知道 ListView 在最初呈现时是否溢出屏幕?
- node.js - Kubernetes + Azure + 环境变量
- c - 在 masm 程序集中在 windows 10 上编译 OpenSSL /GmSSL