TableView重新加载太早了

时间:2017-02-10 00:53:58

标签: ios json swift tableview

我遇到了一个奇怪的问题,我的func myCountUpdate(mainDict: [String : NSObject]) { guard let myDict = mainDict["start"] as? [String : CFString], let myCount = myDict["count"] as? String, let myTotal = Int(myCount) else { text = nil return } print(myTotal) let label: String = "\(count)" text = label } 在检索 JSON 数据后过早重新加载。奇怪的是,有时它会在获取所有必需的数据以填充tableView之后重新加载,有时它会在重新加载之前重新加载,然后才能获取数据。虽然我确实注意到数据有时会返回为零,但我并不完全确定它为什么会这样做。这是我用来检索数据的内容:

tableView

3 个答案:

答案 0 :(得分:1)

正在异步检索数据,因此您的表视图有时可以在没有所有数据的情况下重新加载。您可以做的是在异步数据检索结束时重新加载表视图,或者您可以使用

单独重新加载单元格而不是整个表格
let indexPath = IndexPath(item: rowNumber, section: 0)
tableView.reloadRows(at: [indexPath], with: .top)

答案 1 :(得分:0)

尝试 -

var genreDataArray: [GenreData] = []
      var posterStringArray: [String] = []
      var posterImageArray: [UIImage] = []

    override func viewDidLoad() {
        super.viewDidLoad()

    genredataArray.removeAll()
    posterStringArray.removeAll()
    posterImageArray.removeAll()

                   NOW HERE CALL YOUR CLASS FUNCTION AS ABOVE     
      }

答案 2 :(得分:0)

我想在那种情况下,你应该使用

    dispatch_async(dispatch_get_main_queue(),{
    for data in json as! [Dictionary<String,AnyObject>]
    {
    //take data from json. . .
    }
    //reload your table -> tableView.reloadData()
    })

你应该得到线程的主队列。