gpt4 book ai didi

swift - 如何从 Firestore 访问并显示正确的字符串?

转载 作者:行者123 更新时间:2023-11-30 11:11:31 29 4
gpt4 key购买 nike

这是我在这个很棒的小组中发表的第二篇文章,过去 5 天我一直在研究如何从 Firestore 获取数据并将其与我当前的用户位置。一切似乎都运行良好,除了当我实时测试我的应用程序时(使用我的 iPhone)。有时它会显示正确的位置,有时会崩溃或显示随机位置。我正在使用 where() 方法从我的 Firestore 访问数据,它似乎正在返回我需要的内容。我觉得在我访问信息时,我在文档中的姓名无法正常工作。

这是我的代码:

Firebase 屏幕截图:

地点 1 enter image description here

地点 2 enter image description here

//Creating access to locationManager
var locationManager : CLLocationManager!

@IBOutlet weak var latLabel: UILabel!
@IBOutlet weak var lonLabel: UILabel!
@IBOutlet weak var place: UILabel!
@IBOutlet weak var placeImage: UIImageView!


//Storing the pass data that we got from the firt View

var placeName = String()
var latStore = String()
var lonStore = String()

var lonNumberStore = Double()
var latNumberStore = Double()
var fireLonMax = Double()
var fireLatMax = Double()
var fireLonMin = Double()
var fireLatMin = Double()


override func viewDidLoad() {


//Here goes some code to display on the SecondViewController
latLabel.text = latStore
lonLabel.text = lonStore

latMaxRead()
latMinRead()
lonMaxRead()
lonMinRead()
}

//This is my button to test if I am in the correct place
@IBAction func updateLocation(_ sender: UIButton) {

//
if (fireLatMin...fireLatMax).contains(latNumberStore) && (fireLonMin...fireLonMax).contains(lonNumberStore){
print("Is good place",fireLonMin,fireLonMax,fireLatMin,fireLatMax)
place.text = placeName
} else {
print("Is not good place", fireLonMin,fireLonMax,fireLatMin,fireLatMax)
place.text = "Bad"
}

}

func latMaxRead() {
let docRef = Firestore.firestore()
docRef.collection("places")
.whereField("latMax", isGreaterThanOrEqualTo: latNumberStore)
.getDocuments { (snapshot, error) in
if error != nil {
print("Error getting documents: \(String(describing: error))")
} else {
for document in (snapshot?.documents)! {
self.fireLatMax = document.data()["latMax"] as! Double
//This is where I pull the placeName on my Firebase
self.placeName = document.data()["placeName"] as! String

print("Fire latMax:", self.fireLatMax)
}
}
}

}

func latMinRead() {
let docRef = Firestore.firestore()
docRef.collection("places")
.whereField("latMin", isLessThanOrEqualTo: latNumberStore)
.getDocuments { (snapshot, error) in
if error != nil {
print("Error getting documents: \(String(describing: error))")
} else {
for document in (snapshot?.documents)! {
self.fireLatMin = document.data()["latMin"] as! Double
self.placeName = document.data()["placeName"] as! String
print("Fire latMin: ", self.fireLatMin)
}
}
}

}

func lonMaxRead() {
let docRef = Firestore.firestore()
docRef.collection("places")
.whereField("lonMax", isGreaterThanOrEqualTo: lonNumberStore)
.getDocuments { (snapshot, error) in
if error != nil {
print("Error getting documents: \(String(describing: error))")
} else {
for document in (snapshot?.documents)! {
self.fireLonMax = document.data()["lonMax"] as! Double
self.placeName = document.data()["placeName"] as! String
print("Fire lonMax: ", self.fireLonMax)
}
}
}

}

func lonMinRead() {
let docRef = Firestore.firestore()
docRef.collection("places")
.whereField("lonMin", isLessThanOrEqualTo: lonNumberStore)
.getDocuments { (snapshot, error) in
if error != nil {
print("Error getting documents: \(String(describing: error))")
} else {
for document in (snapshot?.documents)! {
self.fireLonMin = document.data()["lonMin"] as! Double
self.placeName = document.data()["placeName"] as! String

print("Fire lonMin : ", self.fireLonMin)
}
}
}

}

我感觉并且非常有信心我做错了什么,无论是我的查询还是我的地名。

我的控制台和模拟器的结果:

Result from my console and my simulator

我认为 where() 方法不会扰乱我的结果,但我不太确定。

最佳答案

如果您要比较某个半径内的位置,在这种情况下它将不起作用。您应该改用 Firebase GeoFire

一旦我与他们的人交谈,

GeoFire 正在处理进入 FireStore,但现在 FireStore 不可能。但您可以做的就是将位置数据放入 Firebase 中,过滤位置后,您可以再次在 FireStore 上查询更多数据。

您可以从 GeoFire Doc 获取有关 GeoFire 的一些帮助, GeoFire GitGeoFire Blog .

关于swift - 如何从 Firestore 访问并显示正确的字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52143618/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com