如何在swift中为SqLite返回多行或表?

时间:2017-08-22 07:12:33

标签: ios swift xcode sqlite uitableview

我正在使用SqLite库进行swift。我可以用这个方法返回一行,

  func getById(id:Int64) -> Row?{
        do{
            let query=Users.filter(Id==id)
            print(query.asSQL())
            var data = try db!.pluck(query)
            return data
        }catch{
            print("Error: \(error)")
            return nil
        }
    }

此功能正在返回" Row"没关系。但我使用tableView对象所以我需要一个dataSource。

我如何为tableView返回表并设置数据源,我还没有找到这样的例子。

最好的问候。

1 个答案:

答案 0 :(得分:0)

您可以使用此代码:

我不知道你的所有课程,但这是获取SQLite3(swift)查询的主要方法,查看所有结果(如果是多个),追加它们并在结尾处返回整个数据。

//You say you want to return array of rows
func getById(id:Int64) -> [Row]? {
    //Create empty array
    var data = [Row]()
    //build the query. I use UsersTable.entityName.filter(), but I don't know your structure
    let query=Users.filter(Id==id)
    do {
        //for cycle to go to all of the results
        for rowInfo in try db!.pluck(query) {
            //Create variable. I don't know what you want. You can create it as Row() and after that add the information
            let userData = Row()
            //you need to use rowInfo, it store the SQL data. inside the key is from the table Structure. You used Users.filter, so I guess the struct with all column names is Users, so Users.name is the 'name' column
            userData.name = rowInfo[Users.name]
            //Apend the data
            data.append(userData)
        }
    } catch {
        return nil
    }
    //Return the array of Rows
    return data
}