Внедрение NSOperationQueue путем отправки запроса и сохранения ответа в базе данных параллельно

Я выполнил NSOPERATIONQUEUE. Отправляя запрос, и я могу загрузить ответ с сервера, но проблема в том, что я не могу параллельно обрабатывать sqlite для вставки / обновления ответа, я получаю ошибку блокировки базы данных. Может ли кто-нибудь предложить мне решение работать с базой данных для вставки / обновления моего загруженного ответа?

Я создал класс NSOperation как PageLoadOperation, и я передам запрос 7 раз этому классу NSOperation и добавлю его в очередь, как показано ниже

PageLoadOperation *pageLoad=[[PageLoadOperation alloc]initWithRequest:theRequest]; [queue addOperation:pageLoad]; 

В Main я могу отправить запрос ниже NSURLConnection

 [NSURLConnection sendAsynchronousRequest:theRequest queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *error) { [self openConnection]; [self doSomethingWithData:data]; [self closeConnection]; }]; 

и в doSomethingWithData метод i будет вставлять / обновлять ответ, преобразовывая данные в NSString. У меня есть отдельно созданный метод для открытия соединения с базой данных, и после завершения ввода / обновления я закрою соединение следующими способами

 -(BOOL)openConnection { database=nil; NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory , NSUserDomainMask, YES); documentsDir = [paths objectAtIndex:0]; if(sqlite3_open([[documentsDir stringByAppendingPathComponent:@"DataStore"] UTF8String], &database)==SQLITE_OK) { NSLog(@"DB Connection Established successfully"); return YES; } else { NSLog(@"DB not connected"); return NO; } } -(BOOL)closeConnection { NSLog(@"%@",documentsDir); if(sqlite3_close(database)==SQLITE_OK) { NSLog(@"DB Connection closed successfully"); return YES; } else { NSLog(@"Error Failed to close DB because %s",sqlite3_errmsg(database)); return NO; } } 

Мой метод вставки:

  - (void) addToDatabase :(NSString*) sqlstmt :(NSArray *)params { sqlite3_stmt *addStmt; if(sqlite3_prepare_v2(database, [sqlstmt UTF8String], -1, &addStmt, NULL) != SQLITE_OK) NSAssert1(0, @"Error while creating add statement. '%s'", sqlite3_errmsg(database)); else { for (i=1; i<=[params count]; i++) { sqlite3_bind_text(addStmt, i,[[params objectAtIndex:i-1] UTF8String], -1, SQLITE_TRANSIENT); } } if(SQLITE_DONE != sqlite3_step(addStmt)) NSAssert1(0, @"Error while inserting data. '%s'", sqlite3_errmsg(database)); else NSLog(@"%lld",sqlite3_last_insert_rowid(database)); sqlite3_finalize(addStmt); 

}

При добавлении в базу данных я получаю ошибку блокировки базы данных, потому что, когда один ответ открыт, база данных и вставка в базу данных параллельно, другой ответ пытается открыть соединение с базой данных, так как я могу решить эту проблему?