我正在尽量减少向Firebase发送的数据请求数量。 我有一个快照提取以下数据:
snap (Hole1) { GreenBackX = "40.196339"; GreenBackY = "-105.07354"; GreenCenterX = "40.196336"; GreenCenterY = "-105.073409"; GreenFrontX = "40.196342"; GreenFrontY = "-105.073283"; Hazard1 = { CarryX = "40.196839"; CarryY = "-105.07104"; FrontX = "40.196893"; FrontY = "-105.070626"; Name = "R Fwy Bunker"; }; Hazard2 = { CarryX = "40.196321"; CarryY = "-105.071922"; FrontX = "40.196383"; FrontY = "-105.071573"; Name = "L Fwy Bunker"; }; Hazard3 = { CarryX = "40.196622"; CarryY = "-105.072935"; FrontX = "40.196662"; FrontY = "-105.072554"; Name = "R Fwy Bunker 2"; }; Hazard4 = { CarryX = "40.196176"; CarryY = "-105.073545"; FrontX = "40.196225"; FrontY = "-105.073167"; Name = "L Greenside Bunker"; }; HoleH = "258.74"; HoleX = "40.19664"; HoleY = "-105.070484"; }我想要做的是分配一个变量,该变量将是Hazard1\Name 。 到目前为止,我只在文档中看到了如何获取初始值的工作示例,我这样做: let holeX = value?["HoleX"] as? Double ?? 0 let holeX = value?["HoleX"] as? Double ?? 0 let holeX = value?["HoleX"] as? Double ?? 0 ,但如果你愿意的话,我似乎无法找到任何让我达到'二级'的东西。
有一个例子似乎说你可以通过这种方式引用它: let hazard1Name = value?["Hazard1/Name"]但我无法让它工作。
I am trying to minimize the amount of data requests I make to Firebase. I have a snapshot that pulls the following data:
snap (Hole1) { GreenBackX = "40.196339"; GreenBackY = "-105.07354"; GreenCenterX = "40.196336"; GreenCenterY = "-105.073409"; GreenFrontX = "40.196342"; GreenFrontY = "-105.073283"; Hazard1 = { CarryX = "40.196839"; CarryY = "-105.07104"; FrontX = "40.196893"; FrontY = "-105.070626"; Name = "R Fwy Bunker"; }; Hazard2 = { CarryX = "40.196321"; CarryY = "-105.071922"; FrontX = "40.196383"; FrontY = "-105.071573"; Name = "L Fwy Bunker"; }; Hazard3 = { CarryX = "40.196622"; CarryY = "-105.072935"; FrontX = "40.196662"; FrontY = "-105.072554"; Name = "R Fwy Bunker 2"; }; Hazard4 = { CarryX = "40.196176"; CarryY = "-105.073545"; FrontX = "40.196225"; FrontY = "-105.073167"; Name = "L Greenside Bunker"; }; HoleH = "258.74"; HoleX = "40.19664"; HoleY = "-105.070484"; }What I am aiming to do is assign a variable that would be Hazard1\Name. So far, I've only seen working examples in the docs showing how to grab the initial value, which I do like this: let holeX = value?["HoleX"] as? Double ?? 0, but I can't seem to find anything that gets me to the '2nd level' if you will.
There was one example that seemed to say you could do it by referencing it this way: let hazard1Name = value?["Hazard1/Name"] but I couldn't get it to work.
最满意答案
FIRDataSnapshot包含来自给定Firebase数据库位置的数据。 数据已经下载,因此没有太多优化空间,对不起:-(
我想你可能要找的是:
let ref: FIRDatabaseReference = ... ref.child("Hazard1").child("Name").observeSingleEvent(of: .value) { (snapshot) in let name = snapshot.value as! String print("Name: \(name)") }否则,如果您只想从上述快照中获取数据,请尝试以下操作:
let snapshot: FIRDataSnapshot = ... let data = snapshot.value as! [String: Any] let hazard1 = data["Hazard1"] as! [String: Any] let name = hazard1["Name"] as! StringA FIRDataSnapshot contains data from a given Firebase Database location. The data has already been downloaded so there isn't much room for optimizations there, sorry :-(
I think what you might be looking for is:
let ref: FIRDatabaseReference = ... ref.child("Hazard1").child("Name").observeSingleEvent(of: .value) { (snapshot) in let name = snapshot.value as! String print("Name: \(name)") }Otherwise, if you just want to get your data out of the aforementioned snapshot, try this instead:
let snapshot: FIRDataSnapshot = ... let data = snapshot.value as! [String: Any] let hazard1 = data["Hazard1"] as! [String: Any] let name = hazard1["Name"] as! String更多推荐
发布评论