我有一个包含类Card()的数组的字典,我有一个调用移动一个数组的函数的按钮
static var DeliveryStatusArray =
[
"claimable": [Card](),
"onTime": [Card](),
"future": [Card](),
"claimDone": [Card](),
"tooOld": [Card](),
]
我移动我的卡的功能
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 [“claimDone] *中获得2张牌,并且在调用 moveCard()之后我有三张卡
我收到了错误
***因未捕获的异常'NSInternalInconsistencyException'而终止应用程序,原因:'无效更新:第4节中的行数无效。更新后的现有部分中包含的行数(3)必须等于更新前的该部分中包含的行数(2),加上或减去从该部分插入或删除的行数(0插入,0删除)和加或减移入或移出该部分的行数( 0移入,0移出)。'
重新加载数据时,我无法获得更多项目?
答案 0 :(得分: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)