Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/119.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios UITableView由于在滚动tableview的同时重新加载数据而崩溃_Ios_Swift_Uitableview - Fatal编程技术网

Ios UITableView由于在滚动tableview的同时重新加载数据而崩溃

Ios UITableView由于在滚动tableview的同时重新加载数据而崩溃,ios,swift,uitableview,Ios,Swift,Uitableview,我正在使用UITableView显示记录列表。我的桌子允许从上到下刷新。从顶部刷新时,旧记录保持可见,直到获取新数据。获取数据后,将删除数组中的所有记录并填充新记录。然后,作为最后一步,我刷新tableview以反映新获取的数据 一切都很有魅力 但是 当我们进行猴子测试时,它会导致崩溃。在顶部刷新期间,当数据被提取时,如果我继续滚动,拉动tableview,在几次尝试之后,出现了一个不幸的时刻,数组被移除以添加新记录,但此时UITableView由于不断的拉动也在布置单元格。这导致了崩溃 一个简

我正在使用UITableView显示记录列表。我的桌子允许从上到下刷新。从顶部刷新时,旧记录保持可见,直到获取新数据。获取数据后,将删除数组中的所有记录并填充新记录。然后,作为最后一步,我刷新tableview以反映新获取的数据

一切都很有魅力

但是

当我们进行猴子测试时,它会导致崩溃。在顶部刷新期间,当数据被提取时,如果我继续滚动,拉动tableview,在几次尝试之后,出现了一个不幸的时刻,数组被移除以添加新记录,但此时UITableView由于不断的拉动也在布置单元格。这导致了崩溃

一个简单的修复方法是在执行顶部刷新时清空tableview,但就ui美学而言,这看起来并不好。此外,如果呼叫失败,我将不会有任何东西显示给用户

我尝试将刷新代码封装在tableview的
beginUpdate
endUpdate
块中,但由于tableview本身没有更改(即没有添加/删除),因此无法运行


任何帮助都将不胜感激。

因为您说您滚动并崩溃可能是因为您试图将数据插入到不再可见的索引中。在尝试更新表之前,您应该以某种方式检查您的索引。
一些代码可以帮助我更好地理解。

您是使用两个单独的数组来处理表的刷新,还是使用相同的数组来完成表数据的所有加载和刷新?