Swift 3中的Firebase数据库设置和数据处理

Swift 3中的Firebase数据库设置和数据处理,swift,dictionary,firebase,firebase-realtime-database,Swift,Dictionary,Firebase,Firebase Realtime Database,我对斯威夫特和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 = sna

我对斯威夫特和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)
                }
            }
        }
    }
})
在应用程序中,我有多个注释,我需要将信息从数据库传递给它们。此时,我对将数据作为字典读取并将其传递给注释感到有点困惑。 这是我以前没有使用数据库和数组时的代码:

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上有一个类似的数据库,我会这样做:

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)
                }
            }
        }
    }
})

在这里,我为数据节点的每个子节点循环,将该捕捉值作为字典传递,然后读取字典并键入其值以查看格式是否正确,然后分配它并将其附加到数组中。

显示您正在尝试的firebase代码。是的,这正是我试图做的,您救了我一天。还有两个小错误1,纬度和长度必须为“双精度”,2,删除行“让坐标=坐标[i],非常感谢你的帮助。很高兴帮助:D是的,我只是使用字符串,这就是为什么我不知道你在哪里使用双精度。