Data is extracted as project.model not as elements in fast ios

I am trying to extract data items from DataTablein SQLite, but when I get the data, I get the data as myproject.mymodelclass, where WidgetDatais my model class, and myprojectis the name of my project I'm working on, is a console snapshot

[MyProject.WidgetData, MyProject.WidgetData, MyProject.WidgetData, MyProject.WidgetData]

But I want all the elements to DataTablebe printed in the class ViewController.

Class WidgetData strong>

import Foundation

class WidgetData {

var widgetid: Int64?
var widgetname: String = ""
var widgetdescription : String = ""
var widgetform: String = ""

var formid : Int64?
var formname : String = ""
var formdescription : String = ""
var formcategory : String = ""

init(widgetid: Int64) {
    self.widgetid = widgetid
}

init(formid: Int64) {
    self.formid = formid
}

init(widgetid: Int64, widgetname: String, widgetdescription: String, widgetform: String) {
    self.widgetid = widgetid
    self.widgetname = widgetname
    self.widgetdescription = widgetdescription
    self.widgetform = widgetform
}

init(formid: Int64, formname : String, formdescription : String, formcategory : String) {
    self.formid = formid
    self.formname = formname
    self.formdescription = formdescription
    self.formcategory = formcategory
}
}

Class StephencelisDB

import Foundation
class WidgetData {

var widgetid: Int64?
var widgetname: String = ""
var widgetdescription : String = ""
var widgetform: String = ""

var formid : Int64?
var formname : String = ""
var formdescription : String = ""
var formcategory : String = ""

init(widgetid: Int64) {
    self.widgetid = widgetid
}

init(formid: Int64) {
    self.formid = formid
}

init(widgetid: Int64, widgetname: String, widgetdescription: String, widgetform: String) {
    self.widgetid = widgetid
    self.widgetname = widgetname
    self.widgetdescription = widgetdescription
    self.widgetform = widgetform
}

init(formid: Int64, formname : String, formdescription : String, formcategory : String) {
    self.formid = formid
    self.formname = formname
    self.formdescription = formdescription
    self.formcategory = formcategory
}
}

ViewController in which I retrieve values

    //SQLite start
var dataList = [WidgetData]()
var db: OpaquePointer?
var stmt: OpaquePointer?

var widgetnameV = String()
var widgetdescriptionV = String()
var widgetformV = String()

private var contacts = [WidgetData]()
private var selectedContact: Int?


func formDataSetup() {

    let queryString = "INSERT INTO WidgetTable (widgetname, widgetdescription, widgetform) VALUES (?,?,?)"
    //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
    }

    //binding the parameters
    if sqlite3_bind_text(stmt, 1, widgetnameV, -1, nil) != SQLITE_OK{
        let errmsg = String(cString: sqlite3_errmsg(db)!)
        print("failure binding name: \(errmsg)")
        return
    }

    if sqlite3_bind_text(stmt, 2, widgetdescriptionV, -1, nil) != SQLITE_OK {
        let errmsg = String(cString: sqlite3_errmsg(db)!)
        print("failure binding name: \(errmsg)")
        return
    }

    if sqlite3_bind_text(stmt, 3, widgetformV, -1, nil) != SQLITE_OK {
        let errmsg = String(cString: sqlite3_errmsg(db)!)
        print("failure binding name: \(errmsg)")
        return
    }

    //executing the query to insert values
    if sqlite3_step(stmt) != SQLITE_DONE {
        let errmsg = String(cString: sqlite3_errmsg(db)!)
        print("failure inserting hero: \(errmsg)")
        return
    }

}



func readValues(){

    //first empty the list of heroes
    //   heroList.removeAll()

    //this is our select query
    let queryString = "SELECT * FROM WidgetTable"

    //

    print(dataList)

    //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 widgetid = sqlite3_column_int(stmt, 0)
        let widgetnameC = String(cString: sqlite3_column_text(stmt, 1))
        let widgetdescriptionC = String(cString: sqlite3_column_text(stmt, 2))
        let widgetformC = String(cString: sqlite3_column_text(stmt, 3))

        //adding values to list
        dataList.append(WidgetData(widgetid: Int64(Int(widgetid)), widgetname: String(describing: widgetnameC), widgetdescription: String(describing: widgetdescriptionC), widgetform: String(describing: widgetformC)))
        print(dataList)
    }

}
0
source share
1 answer

implement descriptionvar to print class properties

class WidgetData:NSObject
{
    var tripId: String
     var name: String

    init(tripId: String ,name:String)
    {
        self.tripId = tripId
        self.name = name

    } 
   override var description: String
    {

        return "\(self.tripId) \(self.name)"
    }

}

Update

, init, init ! init nil

0

All Articles