Приложение FMDB замораживает при выполнении запроса на обновление

Я использую FMDatabaseQueue, чтобы иметь возможность работать с fmdb с помощью GCD. Но НОД не помогает.

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

Чтобы улучшить производительность, которую я сделал - сложный запрос для уменьшения количества запросов - используйте начало и фиксацию транзакции - используйте setShouldCacheStatements, но НИЧЕГО не помогает

Вот пример кода func complexQuery(sqlQuery: String) -> Bool {

var result = false
self.databaseQueue.inDatabase() { database in

    database.setShouldCacheStatements(true)
    database.beginTransaction()
    result = database.executeStatements(sqlQuery)
    database.commit()
}

person Svitlana    schedule 05.02.2015    source источник
comment
возможно, вам следует close и open FMDatabase. Пожалуйста, проверьте этот stackoverflow.com/a/18216818/1866077   -  person arthankamal    schedule 05.02.2015
comment
Пожалуйста, уточните, что я заморозил приложение. Приложение полностью заблокировалось? Или просто остановитесь на мгновение, выполняя множество обновлений в другом потоке. О каком именно сроке мы здесь говорим? Кроме того, сколько обновлений вы делаете в sqlQuery? Указывает ли result на успешное завершение?   -  person Rob    schedule 05.02.2015
comment
Я просто на мгновение остановился, выполняя множество обновлений в другом потоке, зависая. Это около 4000 обновлений в 3 запросах. Результат успешный. Спасибо   -  person Svitlana    schedule 06.02.2015


Ответы (1)


Попробуйте вызвать closeOpenResultSets в экземпляре FMDB непосредственно перед выполнением запроса.

person Dryagin    schedule 13.08.2015