我目前正在使用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类,以便可以将一些数据插入表视图?
答案 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语句。 您的表视图控制器类不应尝试从数据库中抢夺。 编写一个单独执行此功能的功能