2014-10-02 2 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; 

Try инициализируется в 0 и затем установить новое значение в viewDidLoad - или лучше, просто установите точку останова на каждом viewDidLoad, чтобы проверить, что вызвано первым.

То, что я думаю, что это происходит, что viewDidLoad метод первого класса выполняется после в viewDidLoad второго класса.

Смежные вопросы