【问题标题】:Retrieving key array from Firebase, "variable used within its own value"从 Firebase 检索键数组,“在其自身值中使用的变量”
【发布时间】:2019-05-19 09:19:02
【问题描述】:

试图从 Firebase 获取一组子键

func getWavePosts() {
    let wavePostRoot = Database.database().reference().child("waves_posts/\(self.waveLabel!)/")

    wavePostRoot.observe(.value , with: {snapshot in

        var tempKeys = [String]()
        for child in snapshot.children {
            let snap = child as! DataSnapshot
            let key = snap.key {
                 tempKeys.append(key as String)
            }
        }
        self.tempNames = tempKeys
})
}

我之前已经为值而不是键完成了此操作,附加行是被标记的行。在键初始化下方插入一行会将错误更改为“无法推断通用参数'元素'”。任何帮助将不胜感激!

--------- 不使用 for 循环进行编辑 ---------

 let wavePostRoot = Database.database().reference().child("waves_posts/\(self.waveLabel!)/")

    wavePostRoot.observe(.value , with: {snapshot in

        var tempKeys = [String]()

        self.tempNames.append(snapshot.key)

【问题讨论】:

    标签: ios arrays swift firebase firebase-realtime-database


    【解决方案1】:

    您想进行可选绑定,但您忘记了if 关键字。另外我认为您想检查snap.key 是否属于String 类型

    if let string = snap.key as? String {
        tempKeys.append(string)
    }
    

    【讨论】:

    • 感谢您发现这一点,它清除了错误!不过仍然返回一个空数组...如果有帮助,请向 OP 添加 Firebase 结构的图片
    • Nope 仍然返回一个空数组
    • 我想我理解你,添加了新的编辑以确保
    • 嘿。它没有返回一个特定的错误,只是一个空数组,但我发现它是调用层次结构中的一个顺序,而不是 for 循环本身。顺便说一句,for 循环的答案是正确的,返回子键而不是父键。感谢您的帮助!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-28
    • 1970-01-01
    • 2020-02-10
    • 1970-01-01
    • 2017-12-07
    • 1970-01-01
    相关资源
    最近更新 更多