Swift - 删除数组中的类会导致tableview崩溃

时间:2017-10-30 09:52:11

标签: ios arrays uitableview cell delete-row

我有一个名为Offers的课程,看起来像这样:

class Offer: NSObject {
    var Stores: String?
    var Headlines: String?
    var ImageURL: String?
    var PickedIDs: String?
    var Prices: String?
    var SetTime: Int?
    var Savings: String?
    var Dates: Int?
}

当应用程序加载时,我从我的firebase服务器获取数据,并创建一个名为usersOffers的类数组。

var usersOffers = [Offer]()

在UITableView的自定义单元格中显示来自usersOffers的数据,用户有一个删除按钮,用于删除所选的usersOffers索引并刷新Tableview。要获取和删除索引,我使用此代码:

  func deleteFromOffers(store:String, refresh:Bool, updateSavings:Bool) {
     //   UIApplication.shared.beginIgnoringInteractionEvents()

        if let index = usersOffers.index (where: { $0.Stores == store })  {
            print(index)


                if updateSavings {
                    userSaving = userSaving + Int(usersOffers[index].Savings!)!
                    self.ref?.child("Users").child(uid).child("Besparelse").setValue(userSaving)
                }

                usersOffers.remove(at: index)

                NotificationCenter.default.post(name: NSNotification.Name(rawValue: "setSavings"), object: nil)

                NotificationCenter.default.post(name: NSNotification.Name(rawValue: "refreshstores"), object: nil)

                NotificationCenter.default.post(name: NSNotification.Name(rawValue: "updateannotations"), object: nil)

                if refresh {

                DispatchQueue.main.async {
                    self.tableView.reloadData()
                }
            }
        }
    }

但由于某些原因,我得到一个致命的错误:索引超出范围,当我使用deleteFromOffers函数时。问题在于cellForRowAt,我在第一行尝试设置单元格标题的红线。

cell.storeTextLabel.text = usersOffers[indexPath.row].Stores

谁能告诉我,我做错了什么?

1 个答案:

答案 0 :(得分:0)

“当行数超过实际数组计数时,会发生列出的错误。”

首先你只需调试tableview的“numberOfRows”方法。您可能已删除该行。但是在“numberOfRows”中,您传递的数组计数错误。这会导致错误。