Я получаю все значения столбца formname
в titleLabel
в ячейке таблицы, но, к сожалению, я сталкиваюсь с этими двумя ошибками
Вызов может бросить, но он не помечен как «попытка», и ошибка не обрабатывается
и это
Вызов может бросить, но он не помечен как «попытка», и ошибка не обрабатывается
на этих линиях ниже указанного класса.
Вот другие классы моделей данных
import UIKit
import SQLite
import SQLite3
@available(iOS 11.0, *)
class ViewViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
var fileURL = try! FileManager.default.url(for: .documentDirectory, in: .userDomainMask, appropriateFor: nil, create: false)
.appendingPathComponent("Stephencelis.sqlite")
let forms = Table("FormTable")
var cities : [String]?
var dbd: Connection?
var heroList = [FormDatabase]()
var db : OpaquePointer?
var stmt:OpaquePointer?
var formidV = Int64()
var formnameV = String()
var formdescriptionV = String()
var formdateV = String()
@IBOutlet weak var menu: UIBarButtonItem!
@IBOutlet weak var viewTableView: UITableView!
@IBOutlet weak var dateStringLabelView: UILabel!
private init() {
let path = NSSearchPathForDirectoriesInDomains(
.documentDirectory, .userDomainMask, true
).first!
do {
dbd = try Connection("\(path)/Stephencelis.sqlite3")
} catch {
dbd = nil
print ("Unable to open database")
}
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
func readValues(){
heroList.removeAll()
//this is our select query
let queryString = "SELECT * FROM AuditorTable"
//statement pointer
var stmt:OpaquePointer?
//preparing the query
if sqlite3_prepare(db, queryString, -1, &stmt, nil) != SQLITE_OK{
let errmsg = String(cString: sqlite3_errmsg(db)!)
print("error preparing insert: \(errmsg)")
return
}
//traversing through all the records
while(sqlite3_step(stmt) == SQLITE_ROW){
let formidC = sqlite3_column_int(stmt, 0)
let formnameC = String(cString: sqlite3_column_text(stmt, 1))
let formdescriptionC = String(cString: sqlite3_column_text(stmt, 2))
let formcategoryC = String(cString: sqlite3_column_text(stmt, 3))
let formdateC = String(cString: sqlite3_column_text(stmt, 4))
//adding values to list
heroList.append(FormDatabase(formid: Int64(formidC), formname: String(describing: formnameC), formdescription: String(describing: formdescriptionC), formcategory: String(describing: formcategoryC), formdate: String(describing: formdateC)))
}
}
var numberofrowsinColumn = String()
func countValues(){
//first empty the list of heroes
//heroList.removeAll()
//this is our select query
let queryString = "SELECT COUNT(*) FROM AuditorTable"
//statement pointer
var stmt:OpaquePointer?
//preparing the query
if sqlite3_prepare(db, queryString, -1, &stmt, nil) != SQLITE_OK{
let errmsg = String(cString: sqlite3_errmsg(db)!)
print("error preparing insert: \(errmsg)")
return
}
//traversing through all the records
while(sqlite3_step(stmt) == SQLITE_ROW){
let formidC = sqlite3_column_int(stmt, 0)
let formnameC = String(cString: sqlite3_column_text(stmt, 1))
let formdescriptionC = String(cString: sqlite3_column_text(stmt, 2))
let formcategoryC = String(cString: sqlite3_column_text(stmt, 3))
let formdateC = String(cString: sqlite3_column_text(stmt, 4))
//adding values to list
heroList.append(FormDatabase(formid: Int64(formidC), formname: String(describing: formnameC), formdescription: String(describing: formdescriptionC), formcategory: String(describing: formcategoryC), formdate: String(describing: formdateC)))
numberofrowsinColumn = queryString
}
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
// return heroList.count
if cities == nil {
return 0
}
return cities!.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = viewTableView.dequeueReusableCell(withIdentifier: "ViewTableViewCell") as! ViewTableViewCell
cell.titleLabel?.text = self.cities?[indexPath.row]
cities = [String]()
for row in (try dbd?.prepare(forms))! {
try? cities!.append(row[0] as! String)
override func viewDidLoad() {
super.viewDidLoad()
if sqlite3_open(fileURL.path, &db) != SQLITE_OK {
print("error opening database")
}
viewTableView.delegate = self
viewTableView.dataSource = self
viewTableView.reloadData()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}