2016-03-08 60 views
2

我有以下结构:火力点快照键儿童autoids

DATA : 
     -kojasd-  <----- child by autoid key name for folder 
     property:value 
     -kjofs-  <----- child by aytoid key name for folder 
     property:value 

我怎么能得到childbyautoid()在snapshot.children循环的核心价值?

这里的代码SA位解释:

for items in snap.children { 
        let key = items.key as! String // DOESN T WORK 

        let value = items.value!!["property"] as! String 


       } 
在这段代码

,卡是指数据

我认为这将是很容易得到这个键值,但因为我米这里stucked很长一段时间,任何帮助? :)

真诚 晏

+0

OK,找到了解决办法,我只好扣进入一个新的fdatasnapshot以获得其关键 –

回答

3

对于那些正在使用新的Xcode 8 beta 3和Swift 3的人来说,许多符号已经改变了,像下面的代码片段应该给你的孩子值作为字符串;基本上你需要做其他检查和安全地向上:

 for childSnap in snapshot.children.allObjects { 
      let snap = childSnap as! FIRDataSnapshot 
      if let snapshotValue = snapshot.value as? NSDictionary, let snapVal = snapshotValue[snap.key] as? AnyObject {   
       print("val" , snapVal) 
      } 
     } 
-3

OK,找到了解决办法,我只好扣进入一个新的fdatasnapshot与获得其关键

+1

多一点点的信息将是有益的。 – senty

1

我花了一些时间太,虽然你说这不适合你,我认为这是应该如何做:

rootRef.observeSingleEventOfType(.Value, withBlock: { snapshot in 
    for item in snapshot.children { 
     print(item.key) 
    } 
}) 
+0

nope,您必须将该项目转换为新的FDataSnapshot(如果bot为item.key创建了一个不明确的值),请按照以下步骤让newitem:FDataSnapshot = item然后访问newitem.key或值 –

+0

我不知道,这对我来说无论如何... –

2

如果假设你有帖子,你可以这样得到它。

ref.child("posts").observeEventType(FIRDataEventType.Value, withBlock: { snapshot in 
    for childSnap in snapshot.children.allObjects { 
     let snap = childSnap as! FIRDataSnapshot 
     print(snap.key) 
     let property = snap.value!["property"] as! NSString 
    } 
}) 

我知道awnser已经给出,但我想给一些更多的解释。

+0

辉煌,感谢张贴扩展版本 – drdrdrdr