0
을 충돌 배열 원인의 tableview에서 클래스를 삭제스위프트 - I 클래스라는 이벤트,이처럼 보이는 한
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?
}
응용 프로그램로드, 난 내 중포 기지 서버에서 데이터를 얻을, 그리고 배열을 생성 usersOffers라는 클래스. usersOffers에서 데이터를 표시하는 jQuery과 내 정의 셀에서
var usersOffers = [Offer]()
, 사용자는 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
아무도 내가 뭘 잘못하고 있다고 말할 수 있습니까?
numberOfRowsInSection을 적절히 업데이트 했습니까? 그렇다면 모든 tableViewDataSource 프로토콜 메소드의 코드를 붙여 넣을 수 있습니까? –
게시 한 코드는 알 수 없습니다. Kunal이 요청한 것처럼 다른 데이터 소스 메소드와 함께'cellForRowAt' 메소드를 게시하십시오. 왜 'DispatchQueue.main.async'에서'tableView.reloadData()'에 대한 호출을 래핑하고 있습니까? 백그라운드 스레드에서'deleteFromOffers()'함수가 호출 되었습니까? 통지 핸들러는 무엇을합니까? –