swift - 处理完成后功能未停止
问题描述
我创建了一个基本的 Google Places 应用程序,让用户可以登记到某个位置。当用户尝试签到时,我会遍历可能地点列表,以验证用户是否确实在应用程序中的位置。但是,当我在确认位置正确后尝试退出循环时,我的功能仍然会进入我的“其他”情况(一条错误消息,要求用户请检查到正确的位置)。
在 viewWillAppear 中调用以下函数:
func checkIn(handleComplete:@escaping (()->())){
guard let currentUserID = User.current?.key else {return}
// Specify the place data types to return.
let fields: GMSPlaceField = GMSPlaceField(rawValue: UInt(GMSPlaceField.name.rawValue) |
UInt(GMSPlaceField.placeID.rawValue))!
placesClient.findPlaceLikelihoodsFromCurrentLocation(withPlaceFields: fields, callback: {
(placeLikelihoodList: Array<GMSPlaceLikelihood>?, error: Error?) in
if let error = error {
print("An error occurred: \(error.localizedDescription)")
return
}
if let placeLikelihoodList = placeLikelihoodList {
for likelihood in placeLikelihoodList {
let place = likelihood.place
if likelihood.likelihood >= 0.75 && place.placeID! == self.hangoutID {
let place = likelihood.place
print("Current Place name \(String(describing: place.name!)) at likelihood \(likelihood.likelihood)")
print("Current PlaceID \(String(describing: place.placeID!))")
self.delta = 0.0
// update checkin
DispatchQueue.main.async {
let hangoutRef = self.db.collection("users").document(currentUserID).collection("hangout").document(self.hangoutID).updateData([
"lastCheckin": Date()
]) { err in
if let err = err {
print("Error updating document: \(err)")
} else {
print("Document successfully updated")
}
}
}
handleComplete()
}
}
self.presentDismissableAlert(title: "", message: "Please check in to the hangout to join this chat", button: "OK", dismissed: { (UIAlertAction) in
self.performSegue(withIdentifier: "unwindSegueToChats", sender: self)
})
}
})
}
如果满足正确的条件,代码将到达 handleComplete() 行,但它仍会执行下面的dismissableAlert 并将用户赶出房间。如何修复流程,以便应用程序将在可能的地点列表中循环,如果满足正确的条件,则停止 handleComplete 上的功能,否则如果不满足正确的条件(用户不是在正确的地方)?
谢谢
解决方案
推荐阅读
- arduino - 增量 65535 步以将 LED 亮度随着时间的推移(以小时为单位)增加到最大值,保持在最大值(数小时)并逐渐降低(与启动相反)
- javascript - tensorflowjs - javascript 中是否有等效的标记器方法?
- python - 有没有更好的方法在 python 项目中设置 sys.path.append ?
- r - Markdown PDF Knitr - 减号(U+2212)错误
- typescript - 为什么 Typescript 中常量的类型是 2.8?
- html - 如何使用 CSS 为 SVG 设置动画?
- python - Python findall \n 与正则表达式
- azure - 将 Azure Databricks 日志传输到 azure 日志监视器的平均延迟是多少?
- graphql-ruby - How to return a Union type from a GraphQL Mutation
- c# - C# AlphaVantage.NET: How-to use Proxy