Быстрое удаление словаря элементов и перезагрузка таблицы - PullRequest
0 голосов
/ 26 сентября 2018

У меня есть словарь и продукт в CoreData:

var productSortArray: [Date:[Product]?] = [:]
var productArray = [Product]()

Вот мой номерOfRowsInSection:

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return (productSortArray[dateArray[section]]!!.count)
}

Когда я удаляю строку в commitStyleStyle, я обновляю:

self.productArray.remove(at: indexPath.row)                
tableView.deleteRows(at: [indexPath], with: .automatic)
tableView.reloadData()

Но при удалении строки и перезагрузке таблицы число строк неверно и возникает проблема:

Количество строк, содержащихся в существующем разделе после обновления (1), должно бытьравно количеству строк, содержащихся в этом разделе до обновления (1), плюс или минус количество строк, вставленных или удаленных из этого раздела (0 вставлено, 1 удалено) и плюс или минус количество строк, перемещенных в или изэтот раздел (0 переместился, 0 переместился). '

1 Ответ

0 голосов
/ 26 сентября 2018

Вместо того, чтобы иметь дело с массивами и словарями, вам будет гораздо проще, если вы создадите объекты, которые фактически представляют ваши данные…

struct ProductSection {
    let date: Date
    var products: [Product]
}

var sections: [ProductSection] = // Initialise this

, а затем

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return sections[section].products.count 
}


затем удалить строку…

sections[indexPath.section].remove(at: indexPath.row)
tableView.deleteRows(at: [indexPath], with: .fade)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...