Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/100.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 运行过频繁时代码崩溃。火力基地/斯威夫特_Ios_Swift_Firebase_Firebase Realtime Database - Fatal编程技术网

Ios 运行过频繁时代码崩溃。火力基地/斯威夫特

Ios 运行过频繁时代码崩溃。火力基地/斯威夫特,ios,swift,firebase,firebase-realtime-database,Ios,Swift,Firebase,Firebase Realtime Database,上面的代码所做的是进入用户的invitedTopost,如果时间戳足够新,抓取密钥并在初始化中找到它,然后抓取post信息,用它创建一个post对象,将其附加到我的posts数组中,并每次重新加载我的tableview 我在启动时运行这个代码,然后我有一个按钮和一个运行这个函数的刷新控制器 如果我慢慢地点击刷新按钮,或者拖动鼠标慢慢刷新,这段代码就不会崩溃。然而,如果我快速点击按钮,有时我可以点击3次,有时我可以点击20次,但最终代码崩溃 我在我的cellForRowAtIndexPath中得到

上面的代码所做的是进入用户的invitedTopost,如果时间戳足够新,抓取密钥并在初始化中找到它,然后抓取post信息,用它创建一个post对象,将其附加到我的posts数组中,并每次重新加载我的tableview

我在启动时运行这个代码,然后我有一个按钮和一个运行这个函数的刷新控制器

如果我慢慢地点击刷新按钮,或者拖动鼠标慢慢刷新,这段代码就不会崩溃。然而,如果我快速点击按钮,有时我可以点击3次,有时我可以点击20次,但最终代码崩溃

我在我的cellForRowAtIndexPath中得到的索引超出了这一行的范围

User
  invitedToPosts
       09283094823904
            timestamp: 30909000909

Initiations
       09283094823904
             post information
因此,我假设这与清除post数组和尝试刷新页面有关,而另一个请求运行缓慢,然后它赶上了,一切都变糟了。不知道

如何安全地运行此代码,或者如何成功地编写此代码,以便在使用最新信息刷新tableview时不会发生崩溃


谢谢

为什么是调度队列?另外,为什么每次将post添加到数组时都要刷新表。填充数组,然后重新加载表一次(减去DispatchQueue)可能会更有效。为什么选择DispatchQueue?另外,为什么每次将post添加到数组时都要刷新表。填充数组,然后重新加载表一次(减去DispatchQueue)可能会更有效。
User
  invitedToPosts
       09283094823904
            timestamp: 30909000909

Initiations
       09283094823904
             post information
 let post = posts[indexPath.row]