为表格视图的分区构建Firebase模型

8 浏览
0 Comments

为表格视图的分区构建Firebase模型

我在Firebase中有一个数据结构,我正在将该数据显示在一个表格视图上。我从Firebase获取数据。表格视图的部分是硬编码的,比如“动力,成功等”。有什么最好的方法可以解析这些数据,以便当我在Firebase控制台中添加一个新的部分时,它会在表格视图上添加该部分和该部分的数据,而无需我硬编码部分?任何指导都将不胜感激,我阅读了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和数据库还不熟悉。

0
0 Comments

Firebase是一个非常流行的实时数据库,用于构建移动和网络应用程序。在使用Firebase时,我们经常需要为表视图(TableView)的节(Section)创建数据模型。然而,有时我们可能会遇到一些问题,需要对Firebase模型进行结构化的处理。本文将讨论出现这个问题的原因以及解决方法。

问题的原因是,我们可能会有一些固定数量的字典,每个字典都有一个名称(motivationDictionary,successDictionary)。然而,更好的做法是使用字典的字典,即顶层字典包含多个类别,每个键下面都有一个包含该类别值的字典。这样,新的self.categories["motivation"]与旧的self.motivationDictionary是相同的。

然而,直接操作原始字典和字符串并不是最佳实践。在Swift中,我们应该定义模型类,并将DataSnapshot解析为这些类的实例。例如,我们可以定义一个Item结构体和一个Category类,然后在TableDataModel中存储多个Category实例。这样做的好处是,Swift编译器可以更好地帮助我们确保程序的正确性,并且代码更加清晰。

以下是一个示例代码:

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编译器可以更好地帮助我们确保程序的正确性,代码也更加清晰。

如果想要从字典中获取每个类别,可以使用for循环遍历字典。具体方法可以参考这个链接:stackoverflow.com/questions/24111627/…

通过对Firebase模型进行结构化处理,我们可以更好地组织和管理数据,提高代码的可读性和可维护性。希望本文对使用Firebase构建表视图的数据模型有所帮助。

0