儿童autoids的firebase快照键

时间:2016-03-08 02:19:24

标签: swift firebase

我有以下结构:

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

如何在snapshot.children循环中获取childbyautoid()的键值?

这里有一些代码可以解释:

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

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


                }

在此代码中,snap指的是DATA

我认为获得这个关键值很容易,但是我很久以来就在这里,任何帮助? :)

真诚 晏

4 个答案:

答案 0 :(得分:3)

如果让我们说你有帖子,你可以这样得到它。

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
    }
})

我知道已经给出了芒果,但我想提供更多解释。

答案 1 :(得分:3)

对于使用新Xcode 8 beta 3和swift 3的用户,许多符号已经改变,下面的代码片段应该为您提供子值为String;基本上你需要做另一次检查并安全地向上:

        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)
            }
        }

答案 2 :(得分:2)

我也花了一些时间,尽管你说这对你不起作用,但我认为应该如何做到这一点:

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

答案 3 :(得分:-2)

好的,找到了解决方案,我不得不将快照传递给新的fdatasnapshot以获取其密钥