【发布时间】:2017-10-11 11:49:15
【问题描述】:
我有以下 Json 结构:
{
"users" : {
"yebl4egdQAcKyO7fRx3" : {
"Calls" : {
"Call_1" : {
"CallNumber" : "1",
"CallStatus" : "activ",
"CallTitle" : "Test",
"username" : "Kurt"
},
"Call_2" : {
"CallNumber" : "2",
"CallStatus" : "activ",
"CallTitle" : "kfkf",
"username" : "Kurt"
},
},
"Country" : "USA",
"Date of Birth" : "19770101",
"Gender" : "M",
"email" : "kurt@küde.com",
"username" : "Kurt"
}
}
}
现在,我尝试检索以下数据:
1) 子“Calls”中的调用次数。我试图用这段代码做到这一点:
let databaseRef = FIRDatabase.database().reference()
databaseRef.child("users").child("Calls").observe(.value, with: { snapshot in
let CallCount = snapshot.childrenCount
self.checkCall = Int(CallCount)
print("check")
print(self.checkCall)
})
代码应该返回每个用户的调用次数。但是此代码返回零。似乎我没有正确解决我的观察,因为我的 Json 树是嵌套的。
2) 我需要取回所有用户的单个调用的整个字典(假设不只是示例中的一个):
struct SingleCall {
let callNumber: String!
let callStatus: String!
let callTitle : String!
let username : String!
}
let databaseRef = FIRDatabase.database().reference()
databaseRef.child("users").child("Calls").observe(.value, with: { snapshot in
var newItems: [SingleCall] = []
let enumerator = snapshot.children
while let rest = enumerator.nextObject() as? FIRDataSnapshot {
if self.Filter == (rest.value as? NSDictionary)!["Category"] as! String {
let callNumber = (rest.value as? NSDictionary)!["CallNumber"] as! String
let callStatus = (rest.value as? NSDictionary)!["CallStatus"] as! String
let callTitle = (rest.value as? NSDictionary)!["CallTitle"] as! String
let username = (rest.value as? NSDictionary)!["username"] as! String
newItems.append(SingleCall(callNumber: callNumber, callStatus: callStatus, callTitle: callTitle, username : username))
}
}
})
这也不好用,因为我似乎没有正确地处理 Childs 来检索信息。我还在这里检查了几个条目,但无法帮助自己处理这些条目。我正在使用 Swift 3 进行编程,但我希望使用该语言提供解决方案。
【问题讨论】:
标签: ios json swift firebase swift3