[英]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.