如何在视图中显示以下数据:
[
"parties" {
"2016-12-30" {
"uid" {
"name": "joe",
"age": "32"
},
"uid" {
"name": "kevin",
"age": "29"
}
},
"2016-12-25" {
"uid" {
"name": "ben"
"age": "44"
}
}
}
]
在我的控制器中
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()
})
Class PartyFeedCell:UITableViewCell:
func configureCell(party: Party) {
dateLabel.text = part.date // date as expected
}
作为回应,我可以Object.key
用来更深入地了解循环并获取这些日期(键)的用户。有什么办法可以做到这一点?在说xxx
日期的时候,我应该看到一个用户列表。
Party.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
[...]
}
}
DataService.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
各方中的密钥是由childByAutoId(Y9809s0asas等)生成的
第二件事是代码看起来还不错。问题似乎是如何从字典中获取值?
在这种情况下,代码会将snap.value分配为partyString的[String:AnyObject]字典。所以在那一点partyDict只是一个key:value对的字典
因此,在您的派对课程中,只需完成一个简单的任务即可:
init(date: String, partyData: [String: AnyObject]) {
self._date = date
self._age = partyData["age"]
self._name = partyData["name"]
}
我没有运行您的代码,但是几乎可以使用了。
哦-有了这种结构上的更改,您将需要在Party类中添加另一个属性,即key。确保将父节点名称(snap.key)传递给该类,以便如果需要更新等,它将存储父节点名称(上述结构中的Y9809s0asas)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句