繁体   English   中英

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

[英]Swift - Delete class in array cause tableview to crash

我有一个名为“优惠”的课程,看起来像这样:

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

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

“当行数大于实际数组数时,将出现列出的错误。”

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM