Ios 如何在Swift中使用Firebase属性保存GeoFire?
我试图保存一个包含名称字符串、地址字符串和位置坐标的对象。在文档中,似乎有一种方法可以保存firebase数据,另一种方法可以保存GeoFire数据 火基:Ios 如何在Swift中使用Firebase属性保存GeoFire?,ios,swift,firebase,geofire,Ios,Swift,Firebase,Geofire,我试图保存一个包含名称字符串、地址字符串和位置坐标的对象。在文档中,似乎有一种方法可以保存firebase数据,另一种方法可以保存GeoFire数据 火基: var alanisawesome = ["full_name": "Alan Turing", "date_of_birth": "June 23, 1912"] var gracehop = ["full_name": "Grace Hopper", "date_of_birth": "December 9, 1906"]
var alanisawesome = ["full_name": "Alan Turing", "date_of_birth": "June 23, 1912"]
var gracehop = ["full_name": "Grace Hopper", "date_of_birth": "December 9, 1906"]
var usersRef = ref.childByAppendingPath("users")
var users = ["alanisawesome": alanisawesome, "gracehop": gracehop]
usersRef.setValue(users)
GeoFire:
let geofireRef = Firebase(url: "https://<your-firebase>.firebaseio.com/")
let geoFire = GeoFire(firebaseRef: geofireRef)
geoFire.setLocation(CLLocation(latitude: 37.7853889, longitude: -122.4056973), forKey: "firebase-hq") { (error) in
if (error != nil) {
println("An error occured: \(error)")
} else {
println("Saved location successfully!")
}
}
让geofireRef=Firebase(url:https://.firebaseio.com/")
让geoFire=geoFire(firebaseRef:geofireRef)
geoFire.setLocation(CLLocation(纬度:37.7853889,经度:-122.4056973),forKey:“firebase hq”){(错误)在
如果(错误!=nil){
println(“发生错误:\(错误)”)
}否则{
println(“保存位置成功!”)
}
}
是否可以在同一请求中保存位置和其他数据?我希望在相同的请求中这样做,因为如果位置请求失败,我不希望用户能够创建没有位置数据的对象。或者有其他聪明的方法来施加这种限制吗?因为写入原始实体及其地理位置是两个独立的调用,它们将是两个独立的写入操作。其中一个写操作由您的代码完成,另一个由GeoFire完成。这两个调用都写入JSON树的不同部分
Firebase最近添加了以下功能:。这样,您就可以在一个调用中编写地理位置和实体。如果您想这样做,您必须更改以允许它。因为写入原始实体和其地理位置是两个独立的调用,它们将是两个独立的写入操作。其中一个写操作由您的代码完成,另一个由GeoFire完成。这两个调用都写入JSON树的不同部分
Firebase最近添加了以下功能:。这样,您就可以在一个调用中编写地理位置和实体。如果你想这样做,你必须改变以适应它。我也在努力寻找解决方案,但最终我采取了一种非正统的方法。我为输入的GeoFire密钥制作自己的密钥标题。几乎就像汽车的vin。第一个字符是定义要使用的注释的数字。下一组数字是发布时生成的日期,日期之后是一个用户数据字符串,因为不管文本有多长。这就是关键。在我的地图应用程序中,然后调用标题键,我将标题检索为字符串并将其切碎。GeoFire密钥标题中不允许包含某些字符,因此必须限制用户键入这些字符 我也在努力寻找解决方案,但最终我采取了一种非正统的方法。我为输入的GeoFire密钥制作自己的密钥标题。几乎就像汽车的vin。第一个字符是定义要使用的注释的数字。下一组数字是发布时生成的日期,日期之后是一个用户数据字符串,因为不管文本有多长。这就是关键。在我的地图应用程序中,然后调用标题键,我将标题检索为字符串并将其切碎。GeoFire密钥标题中不允许包含某些字符,因此必须限制用户键入这些字符 我在代码的其他地方使用了多重更新调用,所以这不会是一个问题。更改GeoFire是什么意思?要允许在单个
update()
调用中写入应用程序和GeoFire,需要同时更改应用程序代码和GeoFire的代码。由于GeoFire是开源的,您可以克隆/分叉回购协议,并自己进行更改。啊,这似乎有些过分,我可以解决它。这将是伟大的看到这样的功能在未来的想法!当然会的。请随意向repo添加一个功能请求。@FrankvanPuffelen嗨,我现在也在努力实现这一点,如果你有时间的话-你介意快速查看我的吗?我正在代码的其他地方使用多重更新调用,所以这不会是一个问题。更改GeoFire是什么意思?要允许在单个update()
调用中写入应用程序和GeoFire,需要同时更改应用程序代码和GeoFire的代码。由于GeoFire是开源的,您可以克隆/分叉回购协议,并自己进行更改。啊,这似乎有些过分,我可以解决它。这将是伟大的看到这样的功能在未来的想法!当然会的。请随意向repo添加一个功能请求。@FrankvanPuffelen嗨,我现在也在努力解决这个问题,如果你有时间的话-你介意看看我的real quick吗?或者将出现的非法字符替换为不太可能出现的字符,如-或^,或者将出现的非法字符替换为不太可能出现的字符,如-或^^