【问题标题】:Firebase database setup and data handling in Swift 3Swift 3 中的 Firebase 数据库设置和数据处理
【发布时间】:2017-02-28 12:50:44
【问题描述】:

我对 swift 和 Firebase 还是很陌生。我有这样的数据库:

在应用程序中,我有多个注释,我需要将数据库中的信息传递给它们。在这一点上,我对将数据作为字典读取并将其传递给注释有点困惑。 这是我之前不使用数据库而使用数组时的代码:

for i in 0...2
    {
        let coordinate = coordinates[i]
        let point = myAnnotation(coordinate: CLLocationCoordinate2D(latitude: coordinate[0] , longitude: coordinate[1] ))
        point.name = names[i]
        point.address = addresses[i]
        point.hours = hours[i]
        point.phones = phones[i]

        self.mapView.addAnnotation(point)
    }

您不必为我编写代码,但我至少需要一些提示。

【问题讨论】:

  • 显示您正在尝试的 Firebase 基本代码。

标签: swift dictionary firebase firebase-realtime-database


【解决方案1】:

我的 firebase 上有一个类似的数据库,我会这样做:

FIRDatabase.database().reference().child("Data").observe(.value, with: {(snapshot) in
    if let snapshot = snapshot.children.allObjects as? [FIRDataSnapshot] {
        for snap in snapshot{
            if let dict = snap.value as? [String: Any] {
                if let address = dict["address"] as? String,let lat = dict["lat"] as? String, let long = dict["long"] as? String, let name = dict["name"] as? String {
                    let coordinate = coordinates[i]
                    let point = myAnnotation(coordinate: CLLocationCoordinate2D(latitude: lat , longitude: long ))
                    point.name = name
                    point.address = address

                    self.mapView.addAnnotation(point)
                }
            }
        }
    }
})

我循环为您的 Data 节点的每个子节点,将该快照值作为字典传递,然后读取字典并键入转换其值以查看格式是否正确,然后将其分配并附加到数组中。

【讨论】:

  • 是的,这正是我想要做的,你拯救了我的一天。还有2个小错误1,Lat和Long必须是“as Double”,2,只需删除“let coordinate = coordinates[i]”这一行,非常感谢您的帮助。
  • 很高兴提供帮助:D 是的,我只使用字符串,这就是为什么我没有意识到你在哪里使用双打。
猜你喜欢
  • 1970-01-01
  • 2018-04-18
  • 2017-08-12
  • 1970-01-01
  • 1970-01-01
  • 2017-07-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多