我的tableview
正在重新加载并通过在后台线程中运行计时器来获取每10秒的新数据。但是当数据重新加载时以及我滚动tableview的同时。
应用程序正在崩溃。将错误保留为
[__ NSArrayM objectAtIndex:]:索引18超出界限[0 .. 15]。
答案 0 :(得分:1)
获得响应时,需要从数组中删除对象。我猜你先删除你的数组,然后你的计时器正在执行。
答案 1 :(得分:0)
您还没有提供任何代码,因此这是一个猜测,但正如其他人所说,您可能正在将数据直接重新加载到作为表数据源的数组中。这导致了与时序相关的问题,其中您的数据源数组和先前提供给表视图的信息(特别是行数)不一致。
您应该将新数据提取到另一个数组中,然后在获取所有数据后,您可以更新对表数据源数组的引用并重新加载表视图。
另一种方法是比较两个数组以确定哪些行已被删除以及哪些行是新的。然后,您可以根据需要调用删除/插入行。确保在开始添加/删除行和endUpdates之前调用beginUpdates。
答案 2 :(得分:0)
请尝试在主线程中重新加载表格。如下面的代码
dispatch_async(dispatch_get_main_queue(), ^{
[self.collection reloadData];
});