Ios Swift:使用firebase时,表视图的索引超出范围错误

Ios Swift:使用firebase时,表视图的索引超出范围错误,ios,swift,uitableview,firebase,firebase-realtime-database,Ios,Swift,Uitableview,Firebase,Firebase Realtime Database,我正在创建一个应用程序,主要是为了学习语言。基本上,我正在尝试制作一款应用程序,让你可以用假钱打赌CSGO团队会赢。因此,现在我在应用程序的一部分,允许用户创建一个赌注。然后用户可以看到所有的赌注,然后他可以接受其他用户的赌注。我以前做过这一切,但我注意到一个bug,所以我决定修复它。问题是现在它崩溃了 我需要该应用程序转到另一个屏幕,它允许你在一个团队上下注。然后单击框并设置要在该特定团队上下注的金额。然后,当您单击底部的提交按钮时,它会将用户信息和赌注信息上载到Firebase数据库。然后它

我正在创建一个应用程序,主要是为了学习语言。基本上,我正在尝试制作一款应用程序,让你可以用假钱打赌CSGO团队会赢。因此,现在我在应用程序的一部分,允许用户创建一个赌注。然后用户可以看到所有的赌注,然后他可以接受其他用户的赌注。我以前做过这一切,但我注意到一个bug,所以我决定修复它。问题是现在它崩溃了

我需要该应用程序转到另一个屏幕,它允许你在一个团队上下注。然后单击框并设置要在该特定团队上下注的金额。然后,当您单击底部的提交按钮时,它会将用户信息和赌注信息上载到Firebase数据库。然后它将返回到上一个屏幕,显示所有尚未完成的赌注。因此,他也应该这样做

问题是,当我使用POPView控制器返回到上一个显示赌注的视图控制器时,它给了我一个表视图的索引超出范围错误。奇怪的是,如果我将getBetsFor方法移动到viewDidLoad而不是view,那么它就可以正常工作了。问题是它会出现故障,不会显示用户刚刚下的赌注

我知道我的代码很可怕,我曾尝试将其中的一些代码转换成MVC格式,但没有进一步的麻烦,这里是我的代码

下面的代码是从Firebase数据库获取赌注的代码,然后将该数据放入对象数组,然后将对象显示在TableView上

由于我无法发布更多代码,我将在github上更新项目并在此处发布链接

如果你下载了这个项目,你可以创建自己的帐户,你可以从100美元开始,或者你可以使用电子邮件中的主测试帐户 k@k.com 密码是 kkkkk


明天我将发布数据库的外观和应用程序的外观,谢谢大家晚安。

我下载并运行了您的项目

这里的问题似乎是在删除所有数据源时应该重新加载tableView

更改此项:

    self.getData.betObjects.removeAll()
    self.getData.getBetsFor(completion: { (result) in
        if result == true {
            //show the spinning wheel thing
            self.tableView.reloadData()
        } else {
            // error
        }

    })
为此:

    self.getData.betObjects.removeAll()
    self.tableView.reloadData()
    self.getData.getBetsFor(completion: { (result) in
        if result == true {
            //show the spinning wheel thing
            self.tableView.reloadData()
        } else {
            // error
        }

    })
加上一行:

self.tableView.reloadData()

哈哈,一行代码就解决了整个问题。有没有一些网站可以更详细地解释表视图,我基本上都能理解,但像这样的东西对我来说太疯狂了。一般来说,我会推荐Ray Wenderlich的教程,但对于这种鬼鬼祟祟的东西,可悲的是,我想只有从经验中你才能了解到:另外还有一个我无法理解的错误,我很确定它与删除细胞有关。有时,它是非常随机的,但让我们假设你在应用程序上有三次下注第一次下注是10第二次是20第三次是30有时当你点击下注说20时,它会说匹配下注10,如果你点击30下注,它会说匹配下注20。仅当您已单击其他下注并与他们下注时,才会发生此情况。更新无效:节0中的行数无效。更新10之后现有节中包含的行数必须等于更新15之前该节中包含的行数,加上或减去从该节中插入或删除的行数0 inserted,1 deleted,加上或减去移入或移出该节的行数0 moved in,0 moved out。这是一个巨大的错误,我想我已经修复了,我想我只是需要在有人打赌我只是删除了行之后,从数据库更新表视图中的数据
self.tableView.reloadData()