Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何在Swift中使用Firebase属性保存GeoFire?_Ios_Swift_Firebase_Geofire - Fatal编程技术网

Ios 如何在Swift中使用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"]

我试图保存一个包含名称字符串、地址字符串和位置坐标的对象。在文档中,似乎有一种方法可以保存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 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吗?或者将出现的非法字符替换为不太可能出现的字符,如-或^,或者将出现的非法字符替换为不太可能出现的字符,如-或^^