【问题标题】:Read array from firebase once and put it into an array从 firebase 读取数组一次并将其放入数组中
【发布时间】:2017-12-03 21:03:49
【问题描述】:

如何读取firebase数组并将其放入swift数组?我试图解决这个问题大约 4 个小时。我做错了什么?

ref.child("names").child("myNames").observe(.value) { (snapshot) in
        if let item = snapshot.value as? String {
            namesArray.append(item)
        }
    }

【问题讨论】:

  • 该代码看起来不错。有什么问题?
  • 不应该as? Stringas? [String : Any]
  • @FrankvanPuffelen 数组保持为空,即使我等待一分钟并使用按钮打印数组
  • @EDUsta 如果我将其更改为 as? [String : Any],则会收到错误消息:无法将类型“[String : Any]”的值转换为预期的参数类型“String”
  • @articga 您应该迭代字典并将值推送到 namesArray。是 [String],对吗?

标签: arrays swift firebase-realtime-database


【解决方案1】:

您应该将快照解析为[String : Any]? 并获取字典中的值。

ref.child("names").child("myNames").observe(.value) { (snapshot) in
    if let itemDictionary = snapshot.value as? [String : Any] {
        for (key, value) in itemDictionary {

            // Another check for String
            if let valueString = value as? String {
                namesArray.append(valueString)
            } 
        }
    }
}

【讨论】:

    【解决方案2】:

    您试图将String 的数组解包为单个String,这就是它失败的原因。更改为以下内容:

    ref.child("names").child("myNames").observe(.value) { (snapshot) in
        if let item = snapshot.value as? [String] {
            namesArray = item
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2018-02-19
      • 1970-01-01
      • 2015-07-05
      • 1970-01-01
      • 2012-10-02
      • 2021-09-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多