gpt4 book ai didi

ios - 在swift中获取坐标时为零

转载 作者:行者123 更新时间:2023-11-28 11:22:10 24 4
gpt4 key购买 nike

我正尝试从设备中放弃坐标,但应用程序崩溃了。任何人都知道可能发生了什么?我想错误发生在它请求许可但请求被拒绝时,也许创建一个 if 语句它可以工作,但我找不到任何相关信息。

输出: fatal error :在展开可选值时意外发现 nil

import UIKit  
import Foundation
import CoreLocation

class ViewController: UIViewController, CLLocationManagerDelegate {
let locationManager = CLLocationManager()

override func viewDidLoad() {
super.viewDidLoad()

println("\(locationManager.location.coordinate.latitude), \(locationManager.location.coordinate.longitude)")
self.locationManager.requestAlwaysAuthorization() // Ask for Authorisation from the User.

// For use in foreground

self.locationManager.requestWhenInUseAuthorization()

if (CLLocationManager.locationServicesEnabled())
{

self.locationManager.delegate = self
self.locationManager.desiredAccuracy = kCLLocationAccuracyNearestTenMeters
self.locationManager.startUpdatingLocation()
}



}

override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}

func locationManager(manager: CLLocationManager!, didUpdateLocations locations: [AnyObject]!) {
var locValue:CLLocationCoordinate2D = manager.location.coordinate
var latitudeactual:Double = 0
var longitudeactual:Double = 0

latitudeactual = locValue.latitude
longitudeactual = locValue.longitude

locationManager.stopUpdatingLocation()
if latitudeactual != 0 || longitudeactual != 0 {
latitudeactual = locValue.latitude
longitudeactual = locValue.longitude

}

}
}

最佳答案

location 属性是一个隐式展开的 CLLocation 可选属性,它可能是 nil。永远不要访问隐式展开的可选成员,除非你知道它不是 nil。您可以使用以下代码确认它是 nil:

if locationManager.location != nil {
println("\(locationManager.location.coordinate.latitude), \(locationManager.location.coordinate.longitude)")
} else {
println("locationManager.location is nil")
}

或者你可以:

println("\(locationManager.location)")

但不要在未先检查对象是否为 nil 的情况下尝试访问隐式解包对象的属性。


作为一般规则,除非位置服务已启动并且位置更新已经开始(例如,你已经看到调用了 didUpdateLocations)。确定位置的过程是异步发生的,预计不会在 viewDidLoad 中可用。应该将特定于位置的逻辑放在 didUpdateLocations 方法中。

关于ios - 在swift中获取坐标时为零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26829573/

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