Неверное количество строк в разделе 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)
Другие вопросы по тегам