数组索引超出范围刷新

问题描述:

我有一个Posts类,我在UITableViewController使用Parse作为我的后端查询。数组索引超出范围刷新

在我的viewDidAppear中,我打电话给我的loadData()函数。然后我有一个var refresher = UIRefreshControl()负责我的refresh()功能。

经过几次重新加载数据,我得到一个fatal error: Array index out of range和下面的代码行突出显示在我的cellForRowAtIndexPath

enter image description here

什么是有趣的是,当我打印出来使用println(drive)什么在我的 指数路径,所有的职位都在那里。但之后有些帖子出现两次,然后应用程序崩溃。

timelineData.removeAll(keepCapacity: false) 

我认为有这个应该清除一切,所以我不知道为什么会发生这种情况。

这是我的代码,用于我的刷新功能。

func refresh() 
{ 

    println("refresh table from pull") 

    timelineData.removeAll(keepCapacity: false) 

    var findItemData:PFQuery = PFQuery(className:"Posts") 

    findItemData.addDescendingOrder("createdAt") 

    findItemData.findObjectsInBackgroundWithBlock{ 
     (objects:[AnyObject]? , error:NSError?) -> Void in 
     if error == nil 
     { 
      self.timelineData = objects as! [PFObject] 
      self.newsFeedTableView.reloadData() 

     } 

    } 
    self.refresher.endRefreshing() 


} 

我试着用解析的query.cachePolicy但是这并不重要,因为碰撞发生保存。 https://parse.com/docs/ios/guide#queries-querying-the-local-datastore

我也认为这是因为我有Parse.enableLocalDatastore()但仍然没有运气。

如前所述,我确实打电话给我的其他功能loadData在我的viewDidAppear中,不确定这是否可能是问题,但我不知道如何在有更新时检查数据。仍然不确定这是否是问题的根源。

编辑1

我重视我的timelinedata计数几个功能。第二图像是当我打印计数我cellForRowIndexPath enter image description hereenter image description here

+0

您应该在代码中的多个位置打印数组的边界(计数)。 – LinusGeffarth

+0

so println(timelinedata.count)是什么意思? @LinusG。 – kareem

+0

是的。然后在你的文章中发布输出。 – LinusGeffarth

尝试:

findItemData.findObjectsInBackgroundWithBlock{ 
    (objects:[AnyObject]? , error:NSError?) -> Void in 
    if error == nil 
    { 
     timelineData.removeAll(keepCapacity: false) 
     self.timelineData = objects as! [PFObject] 
     self.newsFeedTableView.reloadData() 
    } 
} 

它可能发生,你有不一致的数据之前,你居然填充您的列表。这样,如果发生某种错误,您将获得您的数据,因此您从这一点开始也是安全的。

+0

修复了这个问题,这个解决方案自发布以来一直为我工作 – kareem

+1

这也适用于我。经过几个星期试图弄清楚这一点。谢谢! –