Неверное количество строк в разделе Swift 3
У меня есть словарь массива, который содержит класс 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
}
Первый цикл Я получил 2 карты в * DeliveryStatusArray["demandDone]* и после вызова moveCard() у меня есть три карты
Я получил ошибку
*** Завершение работы приложения из-за необработанного исключения "NSInternalInconsistencyException", причина: "Неверное обновление: недопустимое количество строк в разделе 4. Количество строк, содержащихся в существующем разделе после обновления (3), должно быть равно количеству строк". содержится в этом разделе до обновления (2), плюс или минус количество строк, вставленных или удаленных из этого раздела (0 вставлено, 0 удалено) и плюс или минус количество строк, перемещенных в или из этого раздела (0 перемещено в 0 переехал).
Я не могу получить больше товаров, когда перезагружаю свои данные?
1 ответ
Если я правильно понимаю, ваш код намного сложнее, чем нужно…
// 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)