Swift 用于子AutoID的firebase快照密钥

Swift 用于子AutoID的firebase快照密钥,swift,firebase,Swift,Firebase,我的结构如下: DATA : -kojasd- <----- child by autoid key name for folder property:value -kjofs- <----- child by aytoid key name for folder property:value 在此代码中,snap指的是数据 我原以为很容易得到这个键值,但我在这里呆了很长时间,有什么帮助吗??) 诚恳

我的结构如下:

DATA :
      -kojasd-      <----- child by autoid key name for folder
         property:value
      -kjofs-       <----- child by aytoid key name for folder
         property:value
在此代码中,snap指的是数据

我原以为很容易得到这个键值,但我在这里呆了很长时间,有什么帮助吗??)

诚恳
Yann

好的,找到了一个解决方案,我必须将快照传递到一个新的fdatasnapshot中以获取其密钥

我也花了一些时间来处理它,虽然您说这对您不起作用,但我认为应该这样做:

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

假设你有帖子,你可以这样得到

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,但我想给出更多的解释。

对于使用新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)
            }
        }

好的,找到了一个解决方案,我必须将快照传递到一个新的fdatasnapshot中才能获得它的keynop,您必须将该项转换为一个新的fdatasnapshot(如果bot为item.key创建一个abiguous值),如下所示:让newitem:fdatasnapshot=item,然后访问newitem.key或value更多一点信息会有所帮助。
        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)
            }
        }