· 7 years ago · Nov 09, 2018, 11:26 AM
1var db: OpaquePointer?
2var brainList = [BrainDumpAdapter]()
3var usesTallCells = false
4
5
6
7@IBOutlet weak var tableViewHeroes: UITableView!
8@IBOutlet weak var textFieldName: UITextField!
9@IBOutlet weak var textFieldPowerRanking: UITextField!
10
11@IBAction func buttonSave(_ sender: UIButton) {
12 let name = textFieldName.text?.trimmingCharacters(in: .whitespacesAndNewlines)
13 let powerRanking = textFieldPowerRanking.text?.trimmingCharacters(in: .whitespacesAndNewlines)
14
15 if(name?.isEmpty)!{
16 textFieldName.layer.borderColor = UIColor.red.cgColor
17 return
18 }
19
20 if(powerRanking?.isEmpty)!{
21 textFieldName.layer.borderColor = UIColor.red.cgColor
22 return
23 }
24
25 var stmt: OpaquePointer?
26
27 let queryString = "INSERT INTO BrainDump (name, pomodoro) VALUES (?,?)"
28
29 if sqlite3_prepare(db, queryString, -1, &stmt, nil) != SQLITE_OK{
30 let errmsg = String(cString: sqlite3_errmsg(db)!)
31 print("error preparing insert: (errmsg)")
32 return
33 }
34
35 if sqlite3_bind_text(stmt, 1, name, -1, nil) != SQLITE_OK{
36 let errmsg = String(cString: sqlite3_errmsg(db)!)
37 print("failure binding name: (errmsg)")
38 return
39 }
40
41 if sqlite3_bind_int(stmt, 2, (powerRanking! as NSString).intValue) != SQLITE_OK{
42 let errmsg = String(cString: sqlite3_errmsg(db)!)
43 print("failure binding name: (errmsg)")
44 return
45 }
46
47 if sqlite3_step(stmt) != SQLITE_DONE {
48 let errmsg = String(cString: sqlite3_errmsg(db)!)
49 print("failure inserting hero: (errmsg)")
50 return
51 }
52
53 textFieldName.text=""
54 textFieldPowerRanking.text=""
55
56 readValues()
57
58 print("Braindump succesfully saved")
59}
60
61//delete item sqlite
62func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCell.EditingStyle, forRowAt indexPath: IndexPath) {
63 if editingStyle == UITableViewCell.EditingStyle.delete {
64 brainList.remove(at: indexPath.row)
65 tableView.deleteRows(at: [indexPath], with: UITableView.RowAnimation.automatic)
66
67 self.tableViewHeroes.reloadData()
68
69 }
70}
71
72func tableView(_ tableView: UITableView, canEditRowAt indexPath: IndexPath) -> Bool {
73 return true
74}
75
76func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
77 let cell = UITableViewCell(style: UITableViewCellStyle.default, reuseIdentifier: "cell")
78 let brainDump: BrainDumpAdapter
79 brainDump = brainList[indexPath.row]
80 cell.textLabel?.text = brainDump.name
81
82
83
84 return cell
85}
86
87
88func readValues(){
89 brainList.removeAll()
90
91 let queryString = "SELECT * FROM BrainDump"
92
93 var stmt:OpaquePointer?
94
95 if sqlite3_prepare(db, queryString, -1, &stmt, nil) != SQLITE_OK{
96 let errmsg = String(cString: sqlite3_errmsg(db)!)
97 print("error preparing insert: (errmsg)")
98 return
99 }
100
101 while(sqlite3_step(stmt) == SQLITE_ROW){
102 let id = sqlite3_column_int(stmt, 0)
103 let name = String(cString: sqlite3_column_text(stmt, 1))
104 let pomodoro = sqlite3_column_int(stmt, 2)
105
106 brainList.append(BrainDumpAdapter(id: Int(id), name: String(describing: name), pomodoro: Int(pomodoro)))
107 }
108
109 self.tableViewHeroes.reloadData()
110}
111
112
113
114
115override func viewDidLoad() {
116 super.viewDidLoad()
117
118
119 let fileURL = try! FileManager.default.url(for: .documentDirectory, in: .userDomainMask, appropriateFor: nil, create: false)
120 .appendingPathComponent("SQLiteDatabse.sqlite")
121
122
123 if sqlite3_open(fileURL.path, &db) != SQLITE_OK {
124 print("error opening database")
125 }
126
127 if sqlite3_exec(db, "CREATE TABLE IF NOT EXISTS BrainDump (id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, pomodoro INTEGER)", nil, nil, nil) != SQLITE_OK {
128 let errmsg = String(cString: sqlite3_errmsg(db)!)
129 print("error creating table: (errmsg)")
130 }
131
132 readValues()
133
134}