gpt4 book ai didi

ios - Swift: "Fatal error: newElements.underestimatedCount was an overestimate"- 这个错误是什么意思?

转载 作者:行者123 更新时间:2023-11-29 05:51:17 29 4
gpt4 key购买 nike

我有一个 tableView,它的数据源是计算数组allItems:

var pendingItems: [Item] = []      
var loadingItems: [Item] = []
var processedItems: [Item] = []

var allItems: [Item] {
return processedItems + loadingItems + pendingItems
}

有时,在运行应用程序时我会收到此错误:线程 1: fatal error :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

有人可以解释为什么会发生这种情况吗?我真的很感激任何帮助!

数据源方法(来自 View Controller ):

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)
}

这是我的项目:

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
}
}

最佳答案

你的代码绝对没问题,很难说出错误的根本原因。以下是有关 underestimatedCount 的一些主要功能希望它对知识目的有所帮助。

underestimatedCount promise 集合的计数不会大于序列中元素的数量,并且在序列协议(protocol)中默认值为零。 Check

@inlinable
public var underestimatedCount: Int {
return 0
}

此外,在收集协议(protocol)中,其默认值与count相同。 Check

@inlinable
public var underestimatedCount: Int {
// TODO: swift-3-indexing-model - review the following
return count
}

因此,由于此默认实现,请使用集合 underestimatedCount直接肯定不如使用序列常见,因为 Collection 保证非破坏性迭代,并且在大多数情况下 underestimatedCount只会返回 count .

当然,自定义集合类型可以提供自己的 underestimatedCount 实现– 以可能比 count 更有效的方式给出它们包含的元素数量的下限实现,这可能会有用。

关于ios - Swift: "Fatal error: newElements.underestimatedCount was an overestimate"- 这个错误是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55650406/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com