数组索引在刷新时超出范围

时间:2015-06-21 23:11:18

标签: ios swift uitableview parse-platform pfquery

我有一个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()


}

我尝试使用Parse的query.cachePolicy,但这并不重要,因为崩溃一直在发生。 https://parse.com/docs/ios/guide#queries-querying-the-local-datastore

我还以为是因为我有Parse.enableLocalDatastore()但仍然没有运气。

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

编辑1

我在几个函数中附加了timelinedata计数。第二张图片是我在cellForRowIndexPath打印计数的时候    enter image description here enter image description here

1 个答案:

答案 0 :(得分:3)

尝试:

<-

在您实际填充列表之前,可能会出现数据不一致的情况。这样,如果发生某种错误,您将获得数据,因此您也可以从这一点开始安全。