我正在创建我的第一个XCode项目,我想创建一个应用程序,您可以点击MKMapView!
,然后您可以看到指向位于地图上的下一个MapViewController
。问题是我在运行应用程序时得到一个帖子:
致命错误:在解包可选值时意外发现nil
在我的输出中我看到(import UIKit
import MapKit
class MapViewController: UIViewController, MKMapViewDelegate{
@IBOutlet weak var mijnMap: MKMapView!
var currentDetail: Parking? {
didSet {
showInfoDetail()
}
}
override func viewDidLoad() {
super.viewDidLoad()
}
func showInfoDetail() {
if let detail = currentDetail {
let coordinaat = CLLocationCoordinate2D(latitude: CLLocationDegrees(detail.latitude)
, longitude: CLLocationDegrees(detail.longitude))
MKMapPointForCoordinate(coordinaat)
mijnMap.centerCoordinate = coordinaat
mijnMap.region = MKCoordinateRegionMakeWithDistance(coordinaat, 1000, 1000)
let parkingAnnotation = MKPointAnnotation()
parkingAnnotation.coordinate = coordinaat
parkingAnnotation.title = detail.title
parkingAnnotation.subtitle = detail.city
mijnMap.addAnnotation(parkingAnnotation)
}
}
}
)nil是。
这是我mijnMap.centerCoordinate = coordinaat
上的代码(地图应该是的详细信息页面)
SELECT * FROM "Table1" WHERE "Record-Id" = :Record-Id
我在这一行上遇到了威胁def main (oEvent):
ctx = XSCRIPTONTONT.getComponentContext ();
mri (ctx, oEvent);
有人可以帮我弄这个吗?谢谢!
答案 0 :(得分:0)
问题在于因为{/ 1}}
didSet
当您尝试从另一个VC设置var currentDetail: Parking? {
didSet {
showInfoDetail()
}
}
时,对方法currentDetail
的调用会触发,这会在VC显示之前发生,这意味着在视图加载之前导致崩溃,因为所有IBOutlet还没有已初始化,因此请在showInfoDetail
中延迟对其的调用,或在使用前检查地图
viewDidAppear
请注意,您在var currentDetail: Parking? {
didSet {
if mijnMap != nil {
showInfoDetail()
}
}
}
/ showInfoDetail
中的viewDidLoad
处的第二个选项中,我并不是建议删除viewDidAppear
,因为您可能希望更改该字符串值didSet
并在每次更改时触发相同的功能