FMResultSet在另一个ViewController中返回nil

时间:2015-02-19 08:57:31

标签: ios swift fmdb

我正在为我的数据库使用FMDB包装器。我可以使用FMResultSet获取数据,但是当我尝试将FMResultSet返回到另一个ViewController时,它返回nil.I我从这里调用我的数据库

var resultSet: FMResultSet! = db.getUserById(1)
                if(resultSet != nil) {
                    self.setUserInfo(resultSet)
}

这是我的数据库编码部分

func getUserById(userId: Int) -> FMResultSet {

 let sharedInstance = DatabaseHandler()
 var database: FMDatabase? = nil
 var resultSet: FMResultSet! =  sharedInstance.database!.executeQuery("SELECT * FROM user_info WHERE user_id = ?", withArgumentsInArray: [userId])

    if(resultSet != nil)  {
        while resultSet.next() {
            var name: String = "USER_NAME"
            var location = "USER_LOCATION"
            println("Name: \(resultSet.stringForColumn(name))")
            println("Location: \(resultSet.stringForColumn(location))")
        }
    }

    sharedInstance.database!.close()
    return resultSet
 }

当我打印这些值时,它会在控制台中显示值,但是当我返回resultSet时,它似乎是nil

我做了什么?

1 个答案:

答案 0 :(得分:0)

您的resultSet仅在数据库打开时有效。返回除resultSet之外的其他内容(即包装器对象/字典/其他)。通常,您迭代resultSet并提取您需要的内容并使用它。或者,您将resultSet分发给调用者, it 调用.next并在完成后将其关闭。