展开 MKMap 位置的可选选项会出错

Unwrapping optional for MKMap Location gives error

我正尝试在我的应用程序中包含一张地图 - 按照说明 here。问题是我在设置区域时遇到错误 - 代码行 "let region = MKMap..." 我不知道为什么。有没有人遇到过这个问题或知道如何提供帮助?谢谢!

代码更新:

import UIKit
import MapKit
import CoreLocation

class ViewController: UIViewController, MKMapViewDelegate {

    // MARK: Properties
    @IBOutlet weak var MapView: MKMapView!
    var locationManager = CLLocationManager.init()

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.

        locationManager.requestWhenInUseAuthorization()

        MapView.mapType = .standard
        MapView.showsUserLocation = true
        MapView.showsScale = true
        MapView.showsCompass = true

        let span = MKCoordinateSpan.init(latitudeDelta: 0.0075, longitudeDelta: 0.0075)
        let region = MKCoordinateRegion.init(center: (locationManager.location?.coordinate)!, span: span)
        MapView.setRegion(region, animated: true)
    }

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


} 

错误更新: 导致错误的行是:

let region = MKCoordinateRegion.init(center: (locationManager.location?.coordinate)!, span: span)

错误是:

线程 1:EXC_BAD_INSTRUCTION(代码=EXC_I386_INVOP,子代码=0x0)

您的代码总是会崩溃。你是说:

    locationManager.requestWhenInUseAuthorization()
    // ...
    let region = MKCoordinateRegion.init(center: (locationManager.location?.coordinate)!, span: span)

所以您没有向位置管理器提供开始获取设备位置的指令,但您在这里强制展开位置管理器的位置。那个位置自然是nil,自然你就崩溃了

如果您的目标是让地图显示用户的位置,则设置地图的 showsUserLocation 或(更好)它的 userTrackingModestop。退后一步,让地图发挥作用。不要通过试图指定其区域来对抗地图视图;它比你更清楚如何显示用户的位置。