2015-12-02 7 views
0

Я пытаюсь извлечь некоторые данные из службы и попытаться отобразить их в виде таблицы, все работает нормально, но данные не отображаются в первый раз.Tableview is not reloading data

override func viewDidLoad() { 
     super.viewDidLoad() 

     // Do any additional setup after loading the view. 
     if NSUserDefaults.standardUserDefaults().objectForKey("PostedQuesIds") != nil{ 


      arr = NSUserDefaults.standardUserDefaults().objectForKey("PostedQuesIds") as? NSArray 

     } 
     else{ 

      print("I am getting no IDS !!!") 
     } 

     if self.arr != nil{ 

      for quesIds in self.arr!{ 

       print("ids '\(quesIds)'") 

       var url = "http://some.com/forum" 
       url.appendContentsOf(quesIds as! String) 
       WebHandler.sharedInstance.GET_REQ(url) 

       self.dataArray = WebHandler.sharedInstance.questionDetails?.objectForKey(quesIds) as? NSMutableArray 


      } 
     } 

I ПРОБОВАЛИ

//NO LUCK WITH THE FOLLWING CODE, IT IS RUNNING AS EXPECTED BUT DATA IS NOT //SHOWN 
//  dispatch_async(dispatch_get_main_queue(), {() -> Void in 
//    
//    
//   
//   print("I am called wtf?") 
//   self.tableView.reloadData() 
//    
//  }) 

Тогда я думал, что делать это через NSNotification; что я сделал:

override func viewWillAppear(animated: Bool) { 

    nc.addObserver(self, selector: "reload", name: "reloadTable", object: nil) 
} 

func reload(){ 
//tried in main queue and out 
    dispatch_async(dispatch_get_main_queue(), {() -> Void in 
     print("I am called wtf?") 
     self.tableView.reloadData() 
    }) 

} 

Теперь я не знаю, что плохого в том, что FYI я отправляю nsnotification из WebHandler класса каждый раз, и она работает, как и в моих журналах я получаю сообщение. Пожалуйста, помогите мне в этом, любая ваша помощь будет высоко оценена.

+0

Действительно ли 'dataArray' содержит в себе какие-либо данные? – Lamar

+0

Можете ли вы показать код, как вы назначаете данные в методах UITableViewDataSource? –

+0

У меня есть полный журнал об этом @Lamar –

ответ

0

Я вижу две возможные проблемы:

  1. Ваш метод WebHandler.sharedInstance.GET_REQ() может быть асинхронным. Если мое предположение верно, то self.tableView.reloadData() вызывается до того, как ваш веб-сервис завершит получение ваших данных и назначит его self.dataArray. Возможно, вам захочется дождаться, пока он закончит, прежде чем позвонить reloadData().
  2. Не знаю, почему у вас есть следующие строки внутри for цикла:

    self.dataArray = WebHandler.sharedInstance.questionDetails?.objectForKey(quesIds) as? NSMutableArray 
    

    Вы уверены, что вы не хотите приложить к dataArray?

+0

Как я могу подождать, если это aysnc? и причина того, что он находится в цикле, что мне нужно получить данные всех id, присутствующих в моем массиве. –

+0

Вы можете добавить обратный вызов, который будет выполнен после завершения веб-службы. –