FMResultSet возвращает ноль в другом ViewController

Я использую оболочку FMDB для своей базы данных. Я могу получать данные с помощью FMResultSet, но когда я пытаюсь вернуть FMResultSet другому ViewController, он возвращает nil. Я вызываю свою базу данных отсюда

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
 }

Когда я печатаю эти значения, они отображаются в консоли, но когда я возвращаю набор результатов, он выглядит равным нулю.

Что я сделал?


person Niloy Mahmud    schedule 19.02.2015    source источник
comment
Никто не может помочь?! Мне это очень нужно :(   -  person Niloy Mahmud    schedule 19.02.2015


Ответы (1)


Ваш набор результатов действителен только тогда, когда база данных открыта. Возвращает что-то отличное от набора результатов (т. е. объект-оболочку/словарь/что угодно). Обычно вы повторяете набор результатов, извлекаете то, что вам нужно, и используете это. В качестве альтернативы вы передаете набор результатов вызывающему объекту, и он вызывает .next и закрывает его по завершении.

person Scott Corscadden    schedule 20.02.2015
comment
Получил вашу идею, спасибо! Я вернул объект класса - person Niloy Mahmud; 20.02.2015