2015-06-10 2 views
1

Доброе утро, все,Как я могу сказать Swift, чтобы дождаться загрузки моего значения?

Вот моя проблема, я хотел бы создать UITableView с JSON, который я получаю от моего веб-интерфейса API.

Проблема заключается в том, что он выполняет функции переопределения first of tableview и мои данные JSON еще не загружены, я тестировал их и загружался, когда все ячейки были напечатаны (без значения для тестирования).

Вот моя функция:

func loadOrders() 
{ 
    Alamofire.request(.GET, "myurlthatIhidebutworks").responseJSON() { (request, response, data, error) in 
     println(request) 
     println(response) 
     println(data) 
     println(error) 
     self.allOrders = JSON(data!) 
    } 
} 

Я попытался сделать это произошло в viewDidLoad и viewWillAppear этот путь, но он не работает.

dispatch_async(dispatch_get_main_queue()) { 
     self.loadOrders() 
} 

Я оценил бы некоторую помощь, спасибо всем :)

+0

Нет причин для использования dispatch_async для вызова метода loadOrders. Этот метод уже асинхронен. Просто вызовите 'self.loadOrders()' без оболочки dispatch_async вокруг него. –

ответ

2

Доброе утро, В конце вашей функции loadOrders() перезагружать ваш tableView:

func loadOrders() 
{ 
    Alamofire.request(.GET, "myurlthatIhidebutworks").responseJSON() { (request, response, data, error) in 
    println(request) 
    println(response) 
    println(data) 
    println(error) 
    self.allOrders = JSON(data!) 

    // Add this for example 
    if data != nil 
    { 
     self.tableView.reloadData() 
    } 
} 

Метод reloadData() вызовет все ваши методы делегата.

+0

К сожалению, у меня все еще есть фатальный error nil value found :(Где я должен загружать loadOrders()? Я попробовал ViewDidLoad() и Viewwillappear, но это так? уже спасибо за ваши ответы – Dinosan0908

+0

работает ли ваш код перед любыми изменениями? – Masterfego

+0

У меня тоже была проблема с инициализацией, поэтому она была решена спасибо вам :) приятный день! еще раз спасибо – Dinosan0908

1

, который должен работать как этот

func loadOrders() 
{ 
    Alamofire.request(.GET, "myurlthatIhidebutworks").responseJSON() { (request, response, data, error) in 
     dispatch_async(dispatch_get_main_queue()) { 
       if(error != nil){ 
       println(response) 
       println(data) 
       println(request) 
       self.allOrders = JSON(data!) 
       } 
       else{ 
       println(error) 
       } 
     } 
    } 
} 
+0

К сожалению, у меня все еще есть фатальная ошибка nil value found :(Где я должен загружать loadOrders()? Я пробовал ViewDidLoad() и Viewwillappear, но это правда? Уже спасибо за ваши ответы – Dinosan0908

+0

loadOrders в первую очередь должно быть в ViewDidLoad –

+0

THANKS GUYS <3 теперь работает! Приятный день :) – Dinosan0908

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