我有一个名为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
谁能告诉我,我做错了什么?
答案 0 :(得分:0)
“当行数超过实际数组计数时,会发生列出的错误。”
首先你只需调试tableview的“numberOfRows”方法。您可能已删除该行。但是在“numberOfRows”中,您传递的数组计数错误。这会导致错误。