gpt4 book ai didi

ios - UITableView 应用程序在 cellForRow 委托(delegate)方法调用上崩溃

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

我在许多UIViewControllers中都有UITableView。该 View Controller 从 api 加载一些数据并将它们放置在 self.data 属性中。然后 TableView 显示该数据。但是在像 cellForRow: 这样的方法中多次使用 IndexPath 访问 self.data 似乎会导致应用程序崩溃。

问题是这样的代码:

let item = data[indexPath.section][indexPath.row] 

我有这个 View Controller 由套接字事件刷新。我认为它可以与滚动同时发生,或者以某种方式加载新数据并重新加载 TableView numberOfRows 和 cellForRow 不是按顺序调用而是同时调用。

我正在尝试使用可选值和类似的东西data[safe:indexPath.section]?[safe:indexPath.row]但它添加了许多样板文件检查我们是否有数据,并且我在教程、代码示例等中没有看到很多这样的用法。

是否有安全的方法可以仅通过索引访问该数组并确保元素数量正确并且不会发生崩溃?

更新:

现在我正在使用它来解决这个问题,但这似乎很奇怪,因为在大多数教程中我没有看到任何人正在进行类型检查

guard let model = data[safe: indexPath.section]?[safe: indexPath.row] else { return 0.1 }

guard let model = data[safe: indexPath.section]?[safe: indexPath.row] else { return UITableViewCell() }

最佳答案

我更喜欢使用 if let 来检查它是否有数据,您也可以为模型属性分配默认值或使用 swiftyJSON 作为数据以避免崩溃

if let section = data[indexPath.section]{
if let data = section[indexPath.row]{
item = data
}
}

关于ios - UITableView 应用程序在 cellForRow 委托(delegate)方法调用上崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56866754/

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