2017-01-10 3 views
0

프로젝트 19를 통해지도에 핀을 놓는 방법을 배우겠습니다. 나는 기본적으로 필자가 viewController.swift 파일과 Capital.swift 파일에서 가지고있는 똑같은 점을 가지고있다. 응용 프로그램이 성공적으로 빌드되지만 치명적인 오류가 발생했다는 다음 섹션에 도달하면 충돌이 발생합니다. 선택적 값을 unwrapping하는 동안 예기치 않게 nil을 발견했습니다. mapView.addAnnotation (london) mapView.addAnnotation (oslo) mapView.addAnnotation (paris) mapView.addAnnotation (로마) mapView.addAnnotation (워싱턴) 이 내 전체 ViewController.swift 파일신속한 프로젝트 해킹 19 치명적인 오류가 계속 발생합니다. 언 래핑 중에 예기치 않게 찾을 수 없음 선택 값

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

에서)합니다 (mapView.addAnnotation을 삭제 : 당신이있는 경우

,이 시도? 이 오류는 옵션 유형의 변수가 있고 unwrap 값이 포함되어 있지 않을 때 변수를 래핑한다는 것을 의미합니다. – Carcigenicate

+1

'mapView' IBOutlet이 연결되어 있습니까? – Hamish

+0

mapView에서 약한 참조를 제거하면 어떻게됩니까? – Yannick

답변

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