Ios Tableview没有重新加载数据

Ios Tableview没有重新加载数据,ios,swift,uitableview,reload,Ios,Swift,Uitableview,Reload,我尝试的是从服务中获取一些数据,并尝试将其显示到表视图中,一切正常,但数据不是第一次显示的 override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view. if NSUserDefaults.standardUserDefaults().objectForKey("PostedQuesIds") != nil

我尝试的是从服务中获取一些数据,并尝试将其显示到表视图中,一切正常,但数据不是第一次显示的

 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


            }
        }
我试过了

//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()
//            
//        })
然后我想通过通知来做这件事;我所做的:

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()
    })

}

现在我不知道它出了什么问题,仅供参考,我每次都从webhandler类发布nsnotification,它的工作方式与我的日志中的一样,我收到了消息。请在这方面帮助我,我们将非常感谢您的任何帮助。

我发现两个可能的问题:

  • 您的
    WebHandler.sharedInstance.GET_REQ()
    方法可能是异步的。如果我的猜测是正确的,
    self.tableView.reloadData()
    将在web服务完成获取数据并将其分配给
    self.dataArray
    之前被调用。在调用
    reloadData()
    之前,您可能需要等待它完成
  • 不确定为什么在
    for
    循环中有以下行:

    self.dataArray = WebHandler.sharedInstance.questionDetails?.objectForKey(quesIds) as? NSMutableArray
    
    是否确实不想附加到
    数据数组


  • dataArray
    是否实际包含任何数据?能否向代码说明如何在UITableViewDataSource方法中分配数据?是的,它包含完整的日志@Lamarit非常完美,因为当我第二次访问同一屏幕时,它会显示从服务器@Saqibomer获取的完整数据。如果是aysnc,我如何等待?它在循环中的原因是我必须获取数组中所有id的数据。您可以添加一个回调,在web服务完成后执行。