FMResultSet 在另一个 ViewController 中返回 nil

FMResultSet returning nil in another ViewController

我正在使用 FMDB 包装器,因为我的 database.I 可以使用 FMResultSet 获取数据,但是当我尝试 return FMResultSet 到另一个 ViewController 时,它 returns 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
 }

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

我到底做了什么?

您的结果集仅在数据库打开时有效。 Return 结果集以外的东西(即包装器 object/dictionary/whatever)。通常,您迭代 resultSet 并提取您需要的内容并使用它。或者,您将结果集分发给调用者, 调用 .next 并在完成后关闭它。