2017-03-29 45 views
0

我有)陣列的dictionnary誰含有類卡(我有一個按鈕誰打電話誰動一個陣列無效的數段行的斯威夫特3

static var DeliveryStatusArray = 
    [ 
     "claimable": [Card](), 
     "onTime": [Card](), 
     "future": [Card](), 
     "claimDone": [Card](), 
     "tooOld": [Card](), 
    ] 

我fonction功能的移動我的卡是

static func moveCard(card:Card) -> Void { 
    var pos:Int = -1 
    var index:Int = 0 
    while(index < (DashboardManager.DeliveryStatusArray["claimable"]?.count)!) 
    { 
     if (DashboardManager.DeliveryStatusArray["claimable"]?[index].idCard == card.idCard) 
     { 
      pos = index 
     } 
     index += 1 
    } 
    if (pos > -1) 
    { 
     let card:Card = (DashboardManager.DeliveryStatusArray["claimable"]?[pos])! 
     DashboardManager.DeliveryStatusArray["claimable"]?.remove(at: pos) 
     DashboardManager.DeliveryStatusArray["claimDone"]?.append(card) 
    } 
} 

當它這樣做我發佈一個通知,我認爲對於調用該函數

func notificationFinish(notification:Notification) -> Void{ 
     let sectionClaimable:Int = (api.dictionary["delivery"]?.index(of: "claimable"))! // Is 1 
     let sectionClaiDone: Int = (api.dictionary["delivery"]?.index(of: "claimDone"))! // Is 4 
     tableView.reloadSections(IndexSet(integer: sectionClaimable), with: .top) 
     tableView.reloadSections(IndexSet(integer: sectionClaimDone), with: .top) 
     return 
    } 

第一個循環我在* DeliveryStatusArray得到了2張卡[「claimDone] *和調用moveCard()後我有三個卡

我得到了錯誤

***終止應用程序由於未捕獲的異常 'NSInternalInconsistencyException',原因:'更新無效:第4節中的行數無效。更新(3)後現有節中包含的行數必須等於更新前(2)節中包含的行數,加上或減去從該部分插入或刪除的行數(0插入,0刪除),加上或減去移入或移出該部分的行數(移入0,移出0)。

當我重新載入數據時,我無法獲得更多項目?

+4

頂部尖...用小寫字母,例如,開始你的屬性名稱'deliveryStatusArray'與類別 –

+0

區分感謝您的提示! –

+0

你能解釋一下'moveCard'是否被_supposed_做? –

回答

0

如果我理解正確的話,你的代碼是一個複雜得多比它需要...

// Get the index of card in claimable with matching idCard 
guard let index = deliveryStatusArray["claimable"]?.index(where: {$0.idCard == card.idCard }) else { return } 

// Remove the card at that index 
let card = deliveryStatusArray["claimable"]?.remove(at: index) 

// Append the card 
deliveryStatusArray["claimDone"]?.append(card)