我首先要说的是我对此非常陌生,并且我很难弄清楚如何解决这个问题。我正在尝试实现一项功能,例如通过firebase查找我的朋友,将多人的位置上传到我的firebase,然后将数据推送到组中的所有用户。我遇到的问题是找出存储这些位置的最佳方式,并在它们进入时对其进行更新。
这是我的firebase结构的图片,但如果需要,我可以轻松更改它。 #34;地点的孩子"是UID
,当新的位置变得可用时,firebase会更新孩子而不是制作新的
这是我的代码,我试图将信息保存到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)
})
}