私はSwiftを初めて利用しています。私はFirebaseから単一のデータを取得する方法を知っていますが、データのリストを配列に取得しようとすると、エラーもデータもありません。私を助けてください。私は今これで数日間苦労しています。 Firebaseのデータをアレイに追加したい、 カテゴリのリストでjsonファイルを作成し、firebaseにインポートしました。Firebaseからのデータのリストをどのようにしてアレイに入れるのですか
私のJSONファイルは、次のようになります。Categoryクラスは、私はここに私のデータを表示するカスタムセルを使用して、この
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
}
}
のように見えます
this よう{
"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データベースが見えます私のカスタムセルクラスです
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のデータで同じ結果を得たいと思います。カテゴリーへの変更があるその配列をいつでも更新するためのviewDidLoadで、その後
var tableData = [Category]()
、firebaseオブザーバを設定します。
@meggarさんのお返事ありがとうございます。しかし、このコードを置く場所と何をすべきか理解できません。 :( –