如何在 SwiftUI 中将 Firebase 结果转换为 List
Posted
技术标签:
【中文标题】如何在 SwiftUI 中将 Firebase 结果转换为 List【英文标题】:How to convert Firebase result to List in SwiftUI 【发布时间】:2020-08-24 05:27:37 【问题描述】:我想根据 firebase 数据在 swiftui 中创建一个列表。所以这是我的用户界面
我已经为那个用户名“mike_one”创建了一个数据,它运行良好, 这是我的 xcode 结果
IC2ol5bimucKu2d89u2YBz0Bqot2 =
name = mike;
photo = "https://firebasestorage.googleapis.com/v0/b/instagram-ios-1ed09.appspot.com/o/photo%2Fa2.jpg?alt=media&token=9b6c58f1-eedc-4190-bc63-3f3325c84d77";
username = "mike_one";
;
这是我的数据库
所以我现在要问的是,如何使数据库的结果成为模型?所以我可以将它用作列表。
请帮助我。 感谢您的回答!
【问题讨论】:
我建议查看 CodableFirebase 并通读,例如 this 这基本上是一种将您获取的数据“解码”到您定义的对象中的方法。 【参考方案1】:严格来说,无法将文本 firebase 数据转换为 List 对象。 SwiftUI 列表定义为
一个容器,显示排列在单列中的数据行
换句话说,它是一个 UI 元素,而不是一个数据元素。
也就是说,List 通常由 Array 或其他数据存储元素支持。因此,您将读取 Firebase 数据并将其存储在一个数组中。然后该数组支持您的 UI List 对象。
在这种情况下,我建议创建一个 UserClass 来保存 Firebase 数据
class UserClass
var name = ""
var photoUrl = ""
var username = ""
然后数组来存储你的用户
var userArray = [UserClass]()
然后在从 Firebase 读取数据时,创建用户对象并填充数组。您的 Firebase 代码并没有这么简单
firebase.observe.... snapshot in
let user = UserClass()
...populate user properites from the snapshot
self.userArray.append(user)
然后在您的视图中,访问数组元素以将它们显示在 List 对象中
struct ContentView: View
var body: some View
List(userArray) user in
//do something with each user object
// like Text(user.username)
【讨论】:
以上是关于如何在 SwiftUI 中将 Firebase 结果转换为 List的主要内容,如果未能解决你的问题,请参考以下文章
数据在 Firebase 中的保存顺序与 SwiftUI 的传输顺序不同