我正在为我的数据库使用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
我做了什么?
答案 0 :(得分:0)
您的resultSet仅在数据库打开时有效。返回除resultSet之外的其他内容(即包装器对象/字典/其他)。通常,您迭代resultSet并提取您需要的内容并使用它。或者,您将resultSet分发给调用者, it 调用.next
并在完成后将其关闭。