我在许多 UIViewControllers 中都有 UITableView 。该视图控制器从api加载一些数据,并将其放在self.data
属性中。然后,表视图显示此数据。但是多次使用self.data
之类的方法使用 IndexPath 来访问cellForRow:
似乎会导致应用程序崩溃。
问题是这样的代码:
let item = data[indexPath.section][indexPath.row]
我通过套接字事件刷新了这个视图控制器。 我认为它可以与滚动同时发生,也可以通过某种方式而不是依次调用加载新数据和重新加载表视图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() }
答案 0 :(得分:0)
如果要检查其是否有数据,我会更喜欢使用,也可以为模型属性分配默认值,或者为数据使用swiftyJSON以避免崩溃
if let section = data[indexPath.section]{
if let data = section[indexPath.row]{
item = data
}
}