【问题标题】:Swift - Read Data from Firebase (Realtime-Database)Swift - 从 Firebase 读取数据(实时数据库)
【发布时间】:2019-06-28 07:02:46
【问题描述】:

我是 Xcode 开发的新手。

我在 Firebase 中创建了以下数据库:

{
  "Bicycle" : {
    "BMX" : {
      "image" : "bmx.png",
      "text" : "BMX ..."
    },
    "Dirt jumping" : {
      "image" : "dirtjumping.png",
      "text" : "Dirt jumping..."
    }
  },
  "Running" : {
    "Half-marathon" : {
      "image" : "halfmarathon.png",
      "text" : "Half-marathon ..."
    },
    "Marathon" : {
      "image" : "marathon.png",
      "text" : "Marathon ..."
    }
  }
}

现在我想在第一个 TableViewController 中显示“Bicycle”和“Running”。

当我尝试以下代码时:

var ref: DatabaseReference!
ref = Database.database().reference()

ref.child("sports").observeSingleEvent(of: .value) { snapshot in
    print(snapshot.childrenCount) // I got the expected number of items
    for case let rest as DataSnapshot in snapshot.children {
        print(rest.children)
    }
}

我得到以下输出:

2
<FTransformedEnumerator: 0x6000038b40a0>
<FTransformedEnumerator: 0x6000038b40a0>

也许你可以给我一个很好的提示。

亲切的问候, 末日之网

【问题讨论】:

  • 作为一个新手,你应该做一些研究。看看 Firebase 文档,他们已经为如何解析提供了足够的内容。

标签: json swift firebase firebase-realtime-database


【解决方案1】:

获取snapshot.value 作为字典并从字典中获取详细信息

ref.child("sports").observeSingleEvent(of: .value, with: { snapshot in
    if let sports = snapshot.value as? [String: Any] { 
        for (title, details) in sports {
            print(title)//Bicycle
            print(details)//["BMX" : ["image" : "bmx.png", "text" : "BMX ..."], "Dirt jumping" : ["image" : "dirtjumping.png","text" : "Dirt jumping..."]]
        }
    }
}) { (error) in
    print(error.localizedDescription)
}

【讨论】:

  • 感谢 Rajesh,下一步是在我的 TableViewController 中显示 Bicycle 和 Running。在我的第一个版本中,我只使用了一个固定数组。我将标题附加到一个空数组中。我是否必须在这里使用 async 才能使数组不为空?
  • 嗯,我不太了解结构。我用 struct SportStruct { var sportsarray = [String]() } 创建了一个新的 Swift-File 第一步是正确的还是完全错误的?
  • @doomsweb 检查link1link2
【解决方案2】:

您可以使用snapshot.valueInExportFormat() 获取字典格式的数据。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-10-07
    • 1970-01-01
    • 2023-02-23
    • 1970-01-01
    • 2021-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多