gpt4 book ai didi

ios - LocationManager 坐标为零

转载 作者:行者123 更新时间:2023-11-30 13:25:43 26 4
gpt4 key购买 nike

我正在尝试在我的应用程序的新闻提要中实现与某些事件的一些动态距离。在我的模型类中,我有一个 distance 字段,我想在加载 VC 后对其进行设置。我有一个名为 parseData 的方法,我在其中调用一个方法来设置模型类中的距离字段,该模型类接受 CLLocationCooperative2D 参数。

错误消息: fatal error :解包可选值时意外发现 nil

这是该方法的代码片段:

func parseData() {
DataService.ds.REF_LOBBYGAMES.queryOrderedByChild("distance").observeEventType(.Value, withBlock: { snapshot in
self.lobbyGames = []
// Parse Firebase Data
if let snapshots = snapshot.children.allObjects as? [FDataSnapshot] {
for snap in snapshots {
if let lobbyGameDict = snap.value as? Dictionary<String, AnyObject> {
let key = snap.key
let lobbyGame = LobbyGameModel(lobbyKey: key, dictionary: lobbyGameDict)
lobbyGame.calculateDistanceAway(self.currentLocation)
self.lobbyGames.append(lobbyGame)
}
}
}
self.collectionView?.reloadData()
})
}

我想要做的是传递用户的当前位置,这样我就可以在模型类中进行计算。但是,行 lobbyGame.calculateDistanceAway(self.currentLocation)
崩溃,因为 self.currentLocationnil

这是我的viewDidLoad方法:

override func viewDidLoad() {
super.viewDidLoad()
self.locationManager.requestWhenInUseAuthorization()
if CLLocationManager.locationServicesEnabled() {
locationManager.delegate = self
locationManager.desiredAccuracy = kCLLocationAccuracyNearestTenMeters
locationManager.startUpdatingLocation()
}
navigationItem.title = "Events Near You"
collectionView?.alwaysBounceVertical = true
collectionView?.backgroundColor = UIColor.rgb(220, green: 220, blue: 220)
collectionView?.registerClass(FeedCell.self, forCellWithReuseIdentifier: CellId)
navigationController?.navigationBar.tintColor = UIColor.rgb(0, green: 171, blue: 236)

parseData()
}

这是我的 didUpdateLocations 委托(delegate)方法:

func locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
self.currentLocation = manager.location?.coordinate
}

我不明白为什么LocationManager的坐标为零!我该如何解决?或者有更好的方法来完成我想要完成的任务吗?任何帮助将不胜感激!

最佳答案

确保位置管理器已初始化,并尝试位置数组而不是管理器对象。

    override func viewDidLoad() {
super.viewDidLoad()
self.locationManager = CLLocationManager()
self.locationManager.requestWhenInUseAuthorization()
if CLLocationManager.locationServicesEnabled() {
locationManager.delegate = self
locationManager.desiredAccuracy = kCLLocationAccuracyNearestTenMeters
locationManager.startUpdatingLocation()
}
}

func locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
let userLocation:CLLocation = locations.last!
}

关于ios - LocationManager 坐标为零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37224015/

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