2014-10-02 4 views
0

지도를 다시 가져 오기 위해 함수를 호출하려고합니다. 이 작업을 수행 할 때마다 다음 오류가 발생합니다.사전에 채워지지 않은 것 같습니다.

[[:]] 
fatal error: unexpectedly found nil while unwrapping an Optional value 

지도가 다음 코드를 통해 채워집니다.

class TableViewController: UITableViewController { 

    var activePlace = 0; 
    var places = [Dictionary<String,String>()]; 
    //an array of maps, each map containing the data we need like long and lat 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     if(places.count == 1){ 
      places.removeAtIndex(0); 
     } 
     places.append(["name":"Taj Mahal", "lat":"27.175282", "lon":"78.042209"]); 
    } 

그리고

이 코드

override func viewDidLoad() { 
    super.viewDidLoad() 

    let tableView = TableViewController(); 
    var places = tableView.getArrayOfDetails(); 
    var index = tableView.getActivePlace(); 
    println(places); 

가 널이되게되어있는 viewDidLoad 메소드가 실행되는 순서 비아라고?

동시에, varActivePlace = 7을 변경하면; 그런 다음 viewDidLoad에서 출력 한 다음 올바르게 표시되어 왜지도가 비어 있는지 알 수 없습니까?

감사

답변

0

activePlace 클래스가 인스턴스화 된 후 viewDidLoad 약간의 시간이라고하는 반면, 인스턴스화시에 초기화 된 인스턴스 속성입니다. 두 클래스가 인스턴스화하는 경우

, 그럼 당신이 초기화시 설정 한 값 읽을 수있는 놀라운 아니다 :

var ActivePlace = 7; 

가 0으로 초기화 시도하고 다음 viewDidLoad에 새 값을 설정을 - 또는 더 나은, 그냥 각각의 viewDidLoad에 중단 점을 설정하여 먼저 호출되는지 확인하십시오.

는 내가이 일이 생각하는 첫 번째 클래스의 viewDidLoad 방법은 두 번째 클래스의viewDidLoad를 실행한다는 것입니다.

관련 문제