gpt4 book ai didi

swift - 如何在 firebase 数据中显示嵌套对象

转载 作者:行者123 更新时间:2023-11-28 15:58:33 27 4
gpt4 key购买 nike

如何在 View 中显示以下数据:

[
"parties" {
"2016-12-30" {
"uid" {
"name": "joe",
"age": "32"
},
"uid" {
"name": "kevin",
"age": "29"
}
},
"2016-12-25" {
"uid" {
"name": "ben"
"age": "44"
}
}
}
]

在我的 Controller 中我有

var parties = [Party]()

DataService.ds.REF_PARTIES.observe(.value, with: { (snapshot) in

if let snapshot = snapshot.children.allObjects as? [FIRDataSnapshot] {
print(snapshot)
for snap in snapshot {
if let partyDict = snap.value as? [String: AnyObject] {
let key = snap.key // the party date
let party = Party(date: key, partyData: partyDict)
self.parties.append(party)

}
}
}
self.tableView.reloadData()
})

类 PartyFeedCell: UITableViewCell:

func configureCell(party: Party) {
dateLabel.text = part.date // date as expected
}

在 React 中,我可以使用 Object.key 深入循环并获取那些日期(键)的用户。有什么办法可以做到这一点?在 xxx 日期下,我应该会看到一个用户列表。

派对.swift:

import Foundation

class Party {
private var _name: String!
private var _age: String!

var name: String {
return _name
}

[...]

init(name: String, age: String) {
self._name = name
self._age = age
}

init(date: String, partyData: [String: AnyObject]) {
self._date = date
[...]
}
}

数据服务.swift:

import Foundation
import FirebaseDatabase

let DB_BASE = FIRDatabase.database().reference()

class DataService {

static let ds = DataService()
private var _REF_BASE = DB_BASE
private var _REF_PARTIES = DB_BASE.child("parties").queryOrderedByKey()

var REF_BASE: FIRDatabaseReference {
return _REF_BASE
}

var REF_PARTIES: FIRDatabaseQuery {
return _REF_PARTIES
}


}

最佳答案

两件事:

使用日期作为键...虽然它可能没问题,但可能应该更改 - 最佳做法是将键与子项中包含的数据分离。

parties
-Y9809s0asas
date: "2016-12-30"
users:
uid_0: true
uid_1: true
-Y89js99skks
date: "2016-12-15"
users:
uid_1: true
uid_3: true

users
uid_0:
name: "ben"
age: "42"
uid_1:
name: "frank"
age: "28"
etc

派对内的 key 由 childByAutoId(Y9809s0asas 等)生成

其次,代码看起来还不错。问题似乎是如何从字典中获取值

在这种情况下,代码将 snap.value 作为 [String: AnyObject] 的字典分配给 partyDict。所以在这一点上 partyDict 只是一个键值对的字典

因此在您的 Party 类中,只需要完成一个简单的作业即可:

  init(date: String, partyData: [String: AnyObject]) {
self._date = date
self._age = partyData["age"]
self._name = partyData["name"]
}

我没有运行您的代码,但它非常接近可用。

哦 - 通过这种结构上的变化,您将需要向 Party 类添加一个属性,key。确保将父节点名称 (snap.key) 传递到类中,以便在需要更新等时将存储父节点名称(上述结构中的 Y9809s0asas)

关于swift - 如何在 firebase 数据中显示嵌套对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41407868/

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