Итак, я прочитал все сообщения, которые я нашел в Интернете, но я все еще не могу сделать эту работу.EXC_BAD_ACCESS на dispatch_async при вставке данных в SQLite с FMDB
Я пытаюсь вставить огромное количество данных в базу данных sqlite. Это 20000 строк данных, поэтому я должен сделать это в фоновом потоке.
У меня есть NSObject .h и .m файлы для обработки операций с базой данных. И я вызываю их изнутри моего главного взгляда.
Вот мой код:
SQLiteDBHandler.m :
database = [FMDatabase databaseWithPath:[self getDBPath]];
[database open];
dispatch_queue_t q = dispatch_queue_create("FMDBQueue", NULL);
dispatch_async(q, ^{
for(Customer *c in arrayOfObjects) {
[database executeUpdate:@"INSERT INTO SNP(rdis, Position, FirstName, LastName) VALUES (?,?,?,?)", c.ID, c.Position, c.FirstName, c.LastName];
}
[database close];
});
и для вызова метода в главном окне, я называю это так:
SQLiteDBHandler *dbHandler = [[SQLiteDBHandler alloc]init];
[dbHandler insertDataIntoTable:mutableArray];
Я попытался изменить FMDatabase с FMDatabaseQueue не повезло , Поэтому любая помощь будет высоко оценена, потому что я довольно отчаянный в этом.
Спасибо. Ура!
tyegah123 разместите свою ошибку стека, чтобы помочь вам. Кажется, вы сделали звонок на свободный блок памяти –
Вы уже включили зомби? –
@MrBonjour: Да, я думал о публикации изображения, но ошибка стека продолжает меняться от кода ошибки 1 до 2 и так далее. @ HermannKlecker: Да, я включил зомби, и ничего не вышло на консольный журнал. Это странно. – tyegah123