0

私の iOS アプリには、items多くの行を持つテーブルを持つ SQLite データベースがあります。すべてのアイテムをメモリにロードすることを避け、代わりに現在表示されているアイテムのみをロードしていUITableViewます。

データベースとやり取りするときに使用できるSQLite.swiftを使用しています。テーブルthrowからカウントを取得する場合、正しいことは何ですか?itemsthrow

このようにユーザーが閉じることができないというアラートを表示しようとしました。

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
    }

    // ...
}
4

1 に答える 1

0

DZNEmptyDataSetなどを使用すると、View Controller に状態変数を設定して、.loading、.showing、.empty、.error などのさまざまな状態を設定できます。.showing 以外の状態では、行数として 0 を返し、代わりに DZNEmptyDataSet を表示させます。たとえば、データの読み込みに失敗した場合は、状態を .error に設定し、エラー メッセージを指定できる emptySetDatasource メソッドを呼び出す tableView.reloadData() を呼び出します。更新コントロールがある場合、ユーザーはプルして更新でき、状態を .loading に戻して再試行します。これは、REST データに基づくテーブル ビューが最も一般的なアプリでどのように機能するかです。

于 2016-10-22T07:48:24.947 に答える