将 Firestore 数据转换为自己的数组格式
Convert Firestore Data into own Array format
到目前为止,我将类别数据存储在一个数组中并显示它们。
var categories: [BusinessCategory] = [
.init(id: "id1", name: "Doctor", image: "https://icon.url"),
.init(id: "id2", name: "Restaurant", image: "https://icon.url"),
.init(id: "id4", name: "Citizen Service", image: "https://icon.url"),
.init(id: "id5", name: "Barber Shop", image: "https://icon.url"),
.init(id: "id6", name: "Corona-Test", image: "https://icon.url")
]
我想使用 Firestore 将其移动到数据库中。在不同的文档中存储类别后,使用getDocuments()
时格式当然不同
func getAllCategories(){
database.collection("categories").getDocuments() { (querySnapshot, err) in
if let err = err {
print("Error getting documents: \(err)")
} else {
for document in querySnapshot!.documents {
print("\(document.data())")
}
}
}
}
getDocuments()
调用的结果是:
["image": https://icon.url, "name": Restaurant, "id": 2]
["image": https://icon.url, "name": Citizen Service, "id": 3]
["image": https://icon.url, "name": Doctor, "id": 1]
["image": https://icon.url, "name": Corona-Test, "id": 5]
["image": https://icon.url, "name": Barber Shop, "id": 4]
关于如何以最佳方式做到这一点有什么想法吗?我需要转换所有类别
["image": https://icon.url, "name": Doctor, "id": 1]
进入
.init(id: "id1", name: "Doctor", image: "https://icon.url"),
- 您可以在项目中创建一个名为
BusinessCategories
的结构来存储每个类别项。您将需要使用 Codable
协议并使用 setData
函数(写入函数)在 Firestore 中创建必要的文件。
struct BusinessCategories: Codable, Identificable {
var id: String
var name: String
var image: String
enum CodingKeys: String, CodingKey {
case id
case name
case image
}
}
在 Firestore 中存储数据模型 BusinessCategories
后,您可以通过 getDocuments
或 snapshotlisteners
取回它们。
一旦你从 Firestore retrieve/read BusinessCategories
文档,你可以解码(使用 for-loop 将文档转换成你已经创建的结构)Firestore 数据进入您事先创建的结构。
到目前为止,这是执行所需任务的最干净、最常用的方法。你也可以参考这个教程 - https://www.youtube.com/watch?v=3-yQeAf3bLE
否则,如果您真的想将 BusinessCategories 聚集到一个数组中。您将不断遇到您当前面临的问题,您将需要(我认为很困难)定制来转换数据,这绝对是一项艰巨的任务。
到目前为止,我将类别数据存储在一个数组中并显示它们。
var categories: [BusinessCategory] = [
.init(id: "id1", name: "Doctor", image: "https://icon.url"),
.init(id: "id2", name: "Restaurant", image: "https://icon.url"),
.init(id: "id4", name: "Citizen Service", image: "https://icon.url"),
.init(id: "id5", name: "Barber Shop", image: "https://icon.url"),
.init(id: "id6", name: "Corona-Test", image: "https://icon.url")
]
我想使用 Firestore 将其移动到数据库中。在不同的文档中存储类别后,使用getDocuments()
func getAllCategories(){
database.collection("categories").getDocuments() { (querySnapshot, err) in
if let err = err {
print("Error getting documents: \(err)")
} else {
for document in querySnapshot!.documents {
print("\(document.data())")
}
}
}
}
getDocuments()
调用的结果是:
["image": https://icon.url, "name": Restaurant, "id": 2]
["image": https://icon.url, "name": Citizen Service, "id": 3]
["image": https://icon.url, "name": Doctor, "id": 1]
["image": https://icon.url, "name": Corona-Test, "id": 5]
["image": https://icon.url, "name": Barber Shop, "id": 4]
关于如何以最佳方式做到这一点有什么想法吗?我需要转换所有类别
["image": https://icon.url, "name": Doctor, "id": 1]
进入
.init(id: "id1", name: "Doctor", image: "https://icon.url"),
- 您可以在项目中创建一个名为
BusinessCategories
的结构来存储每个类别项。您将需要使用Codable
协议并使用setData
函数(写入函数)在 Firestore 中创建必要的文件。
struct BusinessCategories: Codable, Identificable {
var id: String
var name: String
var image: String
enum CodingKeys: String, CodingKey {
case id
case name
case image
}
}
在 Firestore 中存储数据模型
BusinessCategories
后,您可以通过getDocuments
或snapshotlisteners
取回它们。一旦你从 Firestore retrieve/read
BusinessCategories
文档,你可以解码(使用 for-loop 将文档转换成你已经创建的结构)Firestore 数据进入您事先创建的结构。
到目前为止,这是执行所需任务的最干净、最常用的方法。你也可以参考这个教程 - https://www.youtube.com/watch?v=3-yQeAf3bLE
否则,如果您真的想将 BusinessCategories 聚集到一个数组中。您将不断遇到您当前面临的问题,您将需要(我认为很困难)定制来转换数据,这绝对是一项艰巨的任务。