目前我的数据是这样的
{
'listone':
{
'entrydate1':
{
'random key 1':
{
'name': 'Chris';
'date': '24 May 2016'
}
'random key 2':
{
'name': 'John';
'date': '25 May 2016'
}
}
'entrydate2':
{
'random key 1':
{
'name': 'Chris';
'date': '24 May 2016'
}
'random key 2':
{
'name': 'John';
'date': '25 May 2016'
}
}
}
}
随机密钥由firebase childByAutoID()
问题是当我获取快照时,如何获取每个随机密钥的详细信息?基本上我需要从listone
检索数据,我会通过对最早的tableview
进行排序来填充entrydate
。但是在获取快照后,我很遗憾如何从快照中获取信息。
override func viewDidLoad() {
super.viewDidLoad()
ref = FIRDatabase.database().reference()
let uid = FIRAuth.auth()!.currentUser!.uid
let listOneRef = ref.child(uid + "/listone")
_ = listOneRef.observeEventType(.Value, withBlock: { (snapshot) in
for item in snapshot.children {
let child = item.children.allObjects
for snap in child {
//anyitems was initialized as [AnyObject] array
self.anyitems.append(snap)
}
}
self.tableView.reloadData()
})
我不知道如何真正利用细节。当我打印anyitems
时,我确实看到了一些细节,即
[Snap (-KJ-jqTNf3MTtY8YRH-3) {
Name = "Chris";
Date = "30 May 2016";
}, Snap (-KJ01QYoTedZkClsf13Y) {
Name = "John";
Date = "30 May 2016";
}]
答案 0 :(得分:2)
我现在不在Xcode上,所以我无法验证,但它应该是这样的:
ThisWorkbook.Sheets("Comparison").Range("G2").Formula = strFormulas(1)
我认为下标也应该有效:
for snapshot in anyitems {
print(snapshot.value.objectForKey("Name"))
}
如果你需要告诉编译器类型:
for snapshot in anyitems {
print(snapshot.value["Name"])
}
但是,正如您已经注意到的那样,在访问其内容之前安全地投射数组会更好:
for snapshot in anyitems as! [FIRDataSnapshot] {
print(snapshot.value.objectForKey("Name"))
}