gpt4 book ai didi

ios - tableView中抛出错误时该怎么办(_ :numberOfRowsInSection:)?

转载 作者:行者123 更新时间:2023-11-30 12:58:04 24 4
gpt4 key购买 nike

在我的 iOS 应用程序中,我有一个 SQLite 数据库,其中有一个包含许多行的 items 表。我避免将所有项目加载到内存中,而是仅加载当前显示在 UITableView 中的项目。

我正在使用SQLite.swift与数据库交互时可能会抛出。如果从 items 表获取计数确实抛出,那么正确的做法是什么?

我尝试显示用户无法像这样关闭的警报。

class ItemsController: UIViewController, UITableViewDataSource, UITableViewDelegate {

var items: Items!

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
var count = 0
do {
count = try items.getCount();
}
catch {
// present a fatal error message
let alert = UIAlertController(
title: "Fatal Error",
message: "\(error)",
preferredStyle: .alert)
self.present(alert, animated: true, completion: nil)
}
return count
}

// ...
}

Items 类是这样的。

class Items {

var connection: Connection

func getCount() throws -> Int {
return try connection.scalar("SELECT count(*) FROM items") as! Int
}

// ...
}

最佳答案

如果您使用类似 DZNEmptyDataSet 的内容那么你可以在 View Controller 上有一个状态变量并具有不同的状态,例如.loading,.showing,.empty,.error。对于 .showing 以外的任何状态,您将返回 0 行数并让 DZNEmptyDataSet 显示。因此,例如,如果您的数据加载失败,则将状态设置为 .error 并调用 tableView.reloadData() ,该方法将调用emptySetDatasource 方法,您可以在其中指定错误消息。如果您有刷新控件,用户可以拉动刷新,然后将状态放回 .loading 并重试。这就是 REST 数据支持的 TableView 在大多数流行应用程序中的工作方式。

关于ios - tableView中抛出错误时该怎么办(_ :numberOfRowsInSection:)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40189195/

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