2014-10-02 48 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之後執行