gpt4 book ai didi

ios - 如何从 Firebase 获取数据列表到数组中

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

我是 Swift 的新手。我知道如何从 Firebase 获取单个数据,但是当我尝试将数据列表放入数组时,我没有得到任何错误或没有数据。请帮我。几天来我一直在为此苦苦挣扎。我想将来自 Firebase 的数据添加到数组中,我创建了带有类别列表的 json 文件并导入到 firebase 中。

我的 JSON 文件如下所示:

 {
"Category" : [ {
"categoryId" : "1",
"imageName" : "cat_001.png",
"title" : "CAT"
}, {
"categoryId" : "2",
"imageName" : "dog_001.png",
"title" : "DOG"
}, {
"categoryId" : "3",
"imageName" : "fish_001.png",
"title" : "FISH"
}, {
"categoryId" : "4",
"imageName" : "bird_001.png",
"title" : "BRID"
}]
}

Firebase 数据库看起来像 this

类别类看起来像这样

struct Category {

private(set) public var title: String
private(set) public var imageName: String


init(title: String, imageName: String) {
self.title = title
self.imageName = imageName
}
}

我使用自定义单元格来显示我的数据,这是我的自定义单元格类

class CategoryCell: UITableViewCell {

@IBOutlet weak var categoryImage: UIImageView!
@IBOutlet weak var categoryTitle: UILabel!

func updateViews(category: Category){
categoryImage.image = UIImage(named: category.imageName)
categoryTitle.text = category.title
}
}

我使用 DataService 类来获取数据,现在数据是硬编码的,并且可以正常工作。

  class DataService{
static let instance = DataService()

// How to add data from firebase in here`?
private let categories = [Category(title: "CAT", imageName: "cat_001"),
Category(title: "DOG", imageName: "dog_001"),
Category(title: "FISH", imageName: "fish_001")]

func getCategories() -> [Category]{
return categories

}
}

最后是我的 ViewController

class CategoriesVC: UIViewController, UITableViewDataSource, UITableViewDelegate {

@IBOutlet weak var categoryTable: UITableView!

override func viewDidLoad() {
super.viewDidLoad()

categoryTable.dataSource = self
categoryTable.delegate = self
}

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return DataService.instance.getCategories().count
}

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
if let cell = tableView.dequeueReusableCell(withIdentifier: "CategoryCell") as? CategoryCell {
let category = DataService.instance.getCategories()[indexPath.row]
cell.updateViews(category: category)
return cell
}else{
return CategoryCell()
}
}
}

我会在未来添加更多类别。 使用硬编码数据,我的应用程序看起来像 this我想用来自 firebase 的数据获得相同的结果。

最佳答案

像这样尝试,只需为 TableView 数据源使用类别的数组:

var tableData = [Category]()

然后在 viewDidLoad 中,设置一个 firebase 观察器,以便在 firebase 中的类别节点发生更改时随时更新该数组:

ref.child("Category").observe(.value, with: { snapshot in
var newTableData: [Category] = []

for category in snapshot.children {

let dict = category.value as! [String: AnyObject]

let title = dict["title"] as! String
let imageName = dict["imageName"] as! String

let newCategory = Category(title: title,
imageName: imageName)

newTableData.append(newCategory)
}

self.tableData = newTableData
self.tableview.reloadData()
})

关于ios - 如何从 Firebase 获取数据列表到数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47424092/

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