gpt4 book ai didi

swift - 为表格 View 部分构建 Firebase 模型

转载 作者:行者123 更新时间:2023-11-30 11:28:46 25 4
gpt4 key购买 nike

我在 firebase 中有一个数据结构,我在表格 View 上显示该数据。我正在从 firebase 获取数据。表格 View 部分是硬编码的,例如动机、成功等。。解析此数据的最佳方法是什么,以便当我在 firebase 控制台中添加新部分时,它会在 TableView 上添加该部分和该部分的数据,而无需我对这些部分进行硬编码?任何正确方向的帮助将不胜感激,请阅读 firebase 文档,但似乎无法弄清楚。

数据结构

    {
"categories" : {
"motivation" : {
"one" : {
"name" : "Bob",
"title" : "Get up stand up"
},
"two" : {
"name" : "Arsitotle",
"title" : "Great philosopher"
}
},
"success" : {
"one" : {
"name" : "Les",
"title" : "You're great"
},
"three" : {
"name" : "Bob",
"title" : "One love"
},
"two" : {
"name" : "Wayne",
"title" : "You will be great"
}
}
}
}

** 检索数据**

ref.child("categories/motivation").observe(.childAdded, with: {(snapshot:DataSnapshot) in

if let values = snapshot.value as? [String:String] {

self.motivationDictionary.insert(values, at: 0)
}
})
}


ref.child("categories/success").observe(.childAdded, with: {(snapshot:DataSnapshot) in

if let values = snapshot.value as? [String:String] {

self.successDictionary.insert(values, at: 0)
}
})
}

我知道这不是最好的方法,但它确实有效。有点多余,但我是 firebase 和数据库的新手。

最佳答案

因此,您拥有固定数量的字典,其中每个字典都有一个名称(motivationDictionary、successDictionary)。

相反,您可以有一个字典的字典(就像在您的数据结构中一样),这样顶部字典包含类别,并且在每个键下您有一个该类别的值字典,即新的 self.categories["motivation"]和旧的一样self.motivationDictionary等等。

这应该可行,但仅对原始字典和字符串进行操作并不是最佳实践。这种方法对于其他一些语言(例如 Lisps)来说可能是典型的,但对于 Swift 来说不是这样的。

在 Swift 中,您应该定义模型类,并将 DataSnapshot 解析为这些类的实例。例如,如果您从以下位置开始:

struct Item {
let name: String
let title: String
}

class Category {
let name: String = ""
var items: [String: Item] = [:]
}

class TableDataModel {
var sections: [Category] = []
}

然后在你的 observe 里面,您可以填充 TableDataModel,然后从模型中重新加载表。这样Swift编译器可以帮助你更多地确保你的程序是正确的,并且代码也更清晰一些。

关于swift - 为表格 View 部分构建 Firebase 模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50470379/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com