繁体   English   中英

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

[英]Array index out of range on refresh

我有一个Posts类,我在UITableViewController查询使用Parse作为我的后端。

在我的viewDidAppear我调用了我的loadData()函数。 然后我有一个var refresher = UIRefreshControl()负责我的refresh()函数。

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

在此输入图像描述

有趣的是,当我使用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()但仍然没有运气。

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

编辑1

我在几个函数中附加了timelinedata计数。 第二个图像是我在cellForRowIndexPath打印计数的时候 在此输入图像描述在此输入图像描述

尝试:

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM