Я пытаюсь использовать базу данных sqlite в одном из своих проектов.
Он работал нормально; но по какой-то причине что-то случилось, и я не смог найти эту ошибку.
Объект resultSet всегда завершается после первой записи. В массиве всегда только 1 запись. (возможно, оставила на время из-за ошибки)
Я создал класс DBManager, и этот класс DBManager содержит разные внутренние классы. У меня есть частный глобальный экземпляр FMDatabase (и я где-то инициализирую его перед использованием)
Как видите, есть 2 разные строки ошибок печати
Когда я бегу, вторая строка печати выдает эту ошибку:
Ошибка при вызове sqlite3_step (21: недостаточно памяти) rs Error Domain = FMDatabase Code = 7 «недостаточно памяти» UserInfo = 0x790308d0 {NSLocalizedDescription = out of memory}
А в массиве, который должен содержать более 300 записей, всего 1 запись. (Последняя строка печати всегда 1)
Эта часть выглядит простой. (У меня где-то еще есть совершенно аналогичный код, но он отлично работает)
private var database : FMDatabase!
class DBManager{
class Element{
class func get()->[DataElement]{
database.open()
println( database.lastError() )
var result = [DataElement]()
var resultSet: FMResultSet! = database!.executeQuery("SELECT * FROM Element WHERE working = 1", withArgumentsInArray: nil)
while resultSet.next( ) {
let data = DataElement(
id : Int(resultSet.intForColumn("id")),
name: resultSet.stringForColumn("name"),
server: resultSet.stringForColumn("server"),
working: resultSet.boolForColumn("working") )
result.append( data )
}
println( database.lastError() )
database.close()
println( result.count )
return result
}
}
}
PS: Единственная разница между этими таблицами (насколько я понимаю) - это столбец «id». Эта таблица элементов имеет "id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, но другая таблица не имеет столбца id. Но оба они долгое время хорошо работали.