如何将情节提要表视图连接到我创建的类?

时间:2019-11-26 22:20:07

标签: swift

我目前正在使用iOS的Xcode 11.2.1在Swift 5中开发我的第一个应用程序。在Main.storyboard文件中,我创建了一个Tab Bar控制器,它也是一个Initial View控制器。在启动应用程序后立即显示的选项卡包含一个表视图。我想更新所述“表视图”中的单元格,为此,我创建了一个类-DBHandler.swift。

import Foundation
import UIKit
import SQLite

class DBHandler{
    let path = Bundle.main.path(forResource: "db1", ofType: "sql")
    lazy var db = try! Connection(path!, readonly: true)

    func getSessionTitles(){
        let data = Table("data")
        let id = Expression<String>("id")
        for one in try! db.prepare(data) {
            print("id: \(one[id])")
        }
    }
}

我的问题是,每当我尝试控制将表视图拖动到应用程序构建的DBHandler类中,然后因Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<UIView 0x7ff4af6065c0> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key TableView.'错误而崩溃。在情节提要中,按住Control键并单击“视图”后,“出口”部分中会有一个黄色三角形,上面显示UIView does not have an outlet named TableView。 UIView是显示在Table View的Identity Inspector的“ Custom Class”部分中的类,但是我的自定义类未显示在其中。

如何将表视图连接到DBHandler类,以便可以将一些数据插入表视图?

1 个答案:

答案 0 :(得分:0)

尝试一下

Class DBHandler: UITableViewController{
    //your code here
    let path = Bundle.main.path(forResource: "db1", ofType: "sql")
    lazy var db = try! Connection(path!, readonly: true)

    func getSessionTitles(){
        let data = Table("data")
        let id = Expression<String>("id")
    //for one in try! db.prepare(data) {
        //print("id: \(one[id])")
    //}
  }
}

请确保在情节提要(Istoryboard)身份检查器中,您的表视图符合自定义类DBHandler。

编辑-

您不应在提供的代码中使用try语句。 您的表视图控制器类不应尝试从数据库中抢夺。 编写一个单独执行此功能的功能