所以我正在通过项目19学习如何在地图上放下引脚。基本上我已经达到了作者在我的viewController.swift文件和我的Capital.swift文件中完全相同的地步。应用程序将成功构建,但是一旦它到达以下部分就会崩溃,说有一个致命错误:在展开可选值时意外发现nil mapView.addAnnotation(london)mapView.addAnnotation(oslo)mapView.addAnnotation(paris) mapView.addAnnotation(rome)mapView.addAnnotation(washington) 这是我的整个ViewController.swift文件
import UIKit import MapKit
class ViewController: UIViewController {
@IBOutlet weak var mapView: MKMapView!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
let london = Capital(title: "London", coordinate: CLLocationCoordinate2D(latitude: 51.507222, longitude: -0.1275), info: "Home to the 2012 Summer Olympics.")
let oslo = Capital(title: "Oslo", coordinate: CLLocationCoordinate2D(latitude: 59.95, longitude: 10.75), info: "Founded over a thousand years ago.")
let paris = Capital(title: "Paris", coordinate: CLLocationCoordinate2D(latitude: 48.8567, longitude: 2.3508), info: "Often called the City of Light.")
let rome = Capital(title: "Rome", coordinate: CLLocationCoordinate2D(latitude: 41.9, longitude: 12.5), info: "Has a whole country inside it.")
let washington = Capital(title: "Washington DC", coordinate: CLLocationCoordinate2D(latitude: 38.895111, longitude: -77.036667), info: "Named after George himself.")
mapView.addAnnotation(london)
mapView.addAnnotation(oslo)
mapView.addAnnotation(paris)
mapView.addAnnotation(rome)
mapView.addAnnotation(washington)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
很抱歉,如果这是过度杀伤,如果有更简单的方法来显示问题,请告诉我。任何和所有的帮助表示赞赏。谢谢!
答案 0 :(得分:0)
首先,正如评论中所建议的那样,您是否已将故事板中的IBOutlet连接起来?
如果有,请试试这个:
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
mapView.addAnnotation(london)
mapView.addAnnotation(oslo)
mapView.addAnnotation(paris)
mapView.addAnnotation(rome)
mapView.addAnnotation(washington)
}
并从viewDidLoad
中删除mapView.addAnnotation()