【发布时间】:2014-09-29 22:05:38
【问题描述】:
这是我的代码:
import Foundation
import CoreLocation
class ViewController: UIViewController, CLLocationManagerDelegate {
let locationManager = CLLocationManager()
@IBOutlet weak var locationLabel: UILabel!
var coord: CLLocationCoordinate2D?
override func viewDidLoad() {
super.viewDidLoad()
locationManager.delegate = self
locationManager.desiredAccuracy = kCLLocationAccuracyBest
locationManager.requestWhenInUseAuthorization()
if CLLocationManager.authorizationStatus() == CLAuthorizationStatus.Authorized {
locationManager.startUpdatingLocation()
println(coord!.longitude)
locationLabel.text = "location found"
}
func locationManager(manager: CLLocationManager!, didUpdateLocations locations: [AnyObject]!) {
var locationArray = locations as NSArray
var locationObj = locationArray.lastObject as CLLocation
coord = locationObj.coordinate
}
}
}
此代码不返回任何内容(它应该打印经度)。这似乎没问题,因为如果我移动
locationManager.startUpdatingLocation()
println(coord!.longitude)
在 if 语句之外,Xcode 抛出一个运行时错误,并说它在解包 Optional 值时意外发现 nil。我不明白为什么?系统要求我允许使用我的位置。
谢谢!
【问题讨论】: