У меня есть tableView, и он имеет источник данных в виде вычисляемого массива allItems :
var pendingItems: [Item] = []
var loadingItems: [Item] = []
var processedItems: [Item] = []
var allItems: [Item] {
return processedItems + loadingItems + pendingItems
}
Иногда при запуске приложения я получаю эту ошибку: Поток 1:Неустранимая ошибка: newElements.underestimatedCount был завышен .
Похоже, это происходит, когда я пытаюсь достичь элемента по его индексу в этой функции:
func getCellContent(at index: Int) -> (url: String, status: String) {
return (url: queue.allItems[index].url, status: queue.allItems[index].status.description)
}
Вот скриншот: https://www.dropbox.com/s/b9miuyiz1em56mk/Screen%20Shot%202019-04-12%20at%202.06.25%20PM.png?dl=1
Может кто-нибудьобъясните, почему это происходит?Буду очень признателен за любую помощь!
Методы источника данных (из контроллера представления):
extension WebSearchViewController: UITableViewDataSource {
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return presenter.getNumberOfRows()
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "WebPageTableViewCell", for: indexPath) as! WebPageTableViewCell
let (url, status) = presenter.getCellContent(at: indexPath.row)
cell.addressLabel.text = url
cell.statusLabel.text = status
return cell
}
}
Методы помощи от докладчика:
func getNumberOfRows() -> Int {
return queue.allItems.count
}
func getCellContent(at index: Int) -> (url: String, status: String) {
return (url: queue.allItems[index].url, status: queue.allItems[index].status.description)
}
Это мой Item
:
class WebPage: NSObject {
var url: String
var status: URLStatus
init(url: String, status: URLStatus = .unchecked) {
self.url = url
self.status = status
}
func changeStatus(to newStatus: URLStatus) {
self.status = newStatus
}
static func == (lhs: WebPage, rhs: WebPage) -> Bool {
return lhs.url == rhs.url
}
}