我对Swift和编码很新。我想在我目前正在处理的应用程序中实现一个映射。我面临的问题是,只要我想将地图置于特定区域的中心,应用就会崩溃。我已经使用单独的View Controller中的按钮实现了这个功能,该按钮在点击时显示Map View Controller并将CLLocationCoordinate2D值传递给它:
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "showOnMap" {
if let detailImpact = detailImpact {
if let latitude = Double(detailImpact.reclat) {
if let longitude = Double (detailImpact.reclong){
let coordinates = CLLocationCoordinate2D(latitude: latitude, longitude: longitude)
let controller = (segue.destination as UIViewController) as! MapViewController
controller.coordinates = coordinates
}
}
}
}
}
传递值时,Map视图控制器执行居中功能:
let span = MKCoordinateSpan(latitudeDelta: 100, longitudeDelta: 100)
var coordinates: CLLocationCoordinate2D? {
didSet{
centerMapOnLocation()
}
}
func centerMapOnLocation() {
if let coordinates = coordinates {
let coordinateRegion = MKCoordinateRegion(center: coordinates, span: span)
print(coordinateRegion)
ImpactMap.setRegion(coordinateRegion, animated: true)
}
}
我在应用程序崩溃的行之前包含了一个打印功能,输出看起来像预期的那样:
MKCoordinateRegion(中心:__C.CLLocationCoordinate2D(纬度:50.774999999999999,经度:6.0833300000000001),span:__C.MKCoordinateSpan(latitudeDelta:100.0,longitudeDelta:100.0))
错误消息如下:
致命错误:在解包可选值时意外发现nil
我不知道为什么会发生错误,我从不强行打开一个值。我错过了什么?