数组索引超出范围刷新
我有一个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()
}
我试着用解析的query.cachePolicy
但是这并不重要,因为碰撞发生保存。 https://parse.com/docs/ios/guide#queries-querying-the-local-datastore
我也认为这是因为我有Parse.enableLocalDatastore()
但仍然没有运气。
如前所述,我确实打电话给我的其他功能loadData
在我的viewDidAppear
中,不确定这是否可能是问题,但我不知道如何在有更新时检查数据。仍然不确定这是否是问题的根源。
编辑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()
}
}
它可能发生,你有不一致的数据之前,你居然填充您的列表。这样,如果发生某种错误,您将获得您的数据,因此您从这一点开始也是安全的。
修复了这个问题,这个解决方案自发布以来一直为我工作 – kareem
这也适用于我。经过几个星期试图弄清楚这一点。谢谢! –
您应该在代码中的多个位置打印数组的边界(计数)。 – LinusGeffarth
so println(timelinedata.count)是什么意思? @LinusG。 – kareem
是的。然后在你的文章中发布输出。 – LinusGeffarth