处理多个人/对象的坐标并快速存储数据的最佳方法

时间:2017-11-05 18:01:20

标签: ios swift firebase firebase-realtime-database dynamic-arrays

我首先要说的是我对此非常陌生,并且我很难弄清楚如何解决这个问题。我正在尝试实现一项功能,例如通过firebase查找我的朋友,将多人的位置上传到我的firebase,然后将数据推送到组中的所有用户。我遇到的问题是找出存储这些位置的最佳方式,并在它们进入时对其进行更新。

这是我的firebase结构的图片,但如果需要,我可以轻松更改它。 #34;地点的孩子"是UID,当新的位置变得可用时,firebase会更新孩子而不是制作新的

FireBase Structure

这是我的代码,我试图将信息保存到plist,但我并没有嫁给这个想法。当我调用saveLocations函数时,什么都不会崩溃,但是我在plist中不能得到任何东西,或者不需要数据保持不变,所以我在考虑使用数组。我甚至会解析一个json但是当它们上传到服务器时它不会是位置更新(至少在我的理解水平上)

func saveLocations(value: [LocationFormat]) {
    let paths = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true) as NSArray
    let documentDirectory = paths.object(at: 0) as! String
    let path = documentDirectory.appending("FriendsLocations")
    let dict : NSMutableDictionary = [:]
    dict.write(toFile: path, atomically: false)
    print("Saved to plist")
} 

func retrieveLocations() {
    let retrieveMessageDB = Database.database().reference().child("\(Session.ID)").child("locations")

    retrieveMessageDB.observe(.childChanged, with: { (snapshot) in
        let snapshotValue = snapshot.value as! Dictionary<String, String>

        let lat = snapshotValue["Lat"]!
        let lon = snapshotValue["Lon"]!
        let name = snapshotValue["Name"]
        let locationData = LocationFormat()
        locationData.lat = lat
        locationData.lon = lon
        if name != nil {
            locationData.name = name!
        }

        self.locationArray.append(locationData)
        self.saveLocations(value: self.locationArray)    
    })
}

0 个答案:

没有答案