2017-10-30 1 views
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 

아무도 내가 뭘 잘못하고 있다고 말할 수 있습니까?

+0

numberOfRowsInSection을 적절히 업데이트 했습니까? 그렇다면 모든 tableViewDataSource 프로토콜 메소드의 코드를 붙여 넣을 수 있습니까? –

+0

게시 한 코드는 알 수 없습니다. Kunal이 요청한 것처럼 다른 데이터 소스 메소드와 함께'cellForRowAt' 메소드를 게시하십시오. 왜 'DispatchQueue.main.async'에서'tableView.reloadData()'에 대한 호출을 래핑하고 있습니까? 백그라운드 스레드에서'deleteFromOffers()'함수가 호출 되었습니까? 통지 핸들러는 무엇을합니까? –

답변

0

"행 수가 실제 어레이 수보다 많으면 나열된 오류가 발생합니다."

우선 tableview의 "numberOfRows"메소드를 디버깅하십시오. 행을 삭제했을 수도 있습니다. 그러나 "numberOfRows"에서 잘못된 배열 수를 전달하고 있습니다. 그 오류가 발생합니다.

관련 문제