【问题标题】:Pull string value from firebase snapshot从 Firebase 快照中提取字符串值
【发布时间】:2019-04-06 22:54:00
【问题描述】:

我是一名新的 Swift 开发人员。我正在使用 Swift 4.2 和 Xcode 10.1。

我正在尝试从 firebase 快照创建字符串数组。我可以通过设置结构模型并使用初始化程序来做到这一点,但是当我想直接在代码中执行此操作而不使用单独的结构时,它不起作用。这是我的代码:

    // Get the likers
    dbRef.child("likers").observeSingleEvent(of: .value) { snapshot in

        // Declare an array to hold the Likers
        var retrievedLikers = [String]()

        // Loop through the retrieved likers and put into the array
        for child in snapshot.children {
            let snap = child as! DataSnapshot
            let dict = snap.value as! [String:Any]
            let likerId = dict["userId"] as? String ?? ""
            print (likerId)
            retrievedLikers.insert(likerId, at: 0)
        }
            likers = retrievedLikers
        }

我的 firebase 数据模型如下所示:

我尝试了几种方法。上面的代码是基于另一个 SO 建议的最新代码。

问题是我无法使用 snap.value 创建字典。 Snap 有正确的数据。我收到一条错误消息,提示“无法将 '__NSCFString' 类型的值大小写为 'NSDictionary'。但快照显示为字典。这是一个屏幕截图:

任何帮助将不胜感激。我已经尝试了 3 个小时来解决这个问题。

【问题讨论】:

    标签: swift firebase firebase-realtime-database


    【解决方案1】:

    你可以试试

    let res = snapshot.value as! [String:String] 
    retrievedLikers = Array(res.values)
    

    这里的崩溃snap.value 是一个String,不能转换为[String:Any]

    let dict = snap.value as! [String:Any]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-26
      • 1970-01-01
      • 2018-07-10
      相关资源
      最近更新 更多