0

Webからデータをダウンロードし、ダウンロードしたデータをsqliteデータベースに挿入します。今私が欲しいのは、ダウンロード中にバックグラウンドで発生するはずのデータベースに挿入されているデータであり、ユーザーはビューで他のことを行うこともできます。そのため、バックグラウンドプロセスでデータをsqliteに挿入する可能性があります。

これを使用していますが、これを使用するとアプリケーションがクラッシュします。

NSNumber *number = [NSNumber numberWithInteger:1];
NSOperationQueue *queue = [NSOperationQueue new];
NSInvocationOperation *operation = [[NSInvocationOperation alloc] initWithTarget:self
                                                                        selector:@selector(InsertIntodatabase)
                                                                          object:number];

[queue addOperation:operation];
[operation release];

前もって感謝します

4

1 に答える 1

0

バックグラウンドスレッドにデータを挿入できます。ただし、2つの異なるスレッドから同時に(多かれ少なかれ)DBにアクセスしようとすると、「データベースがロックされました」というエラーが発生し、回復が困難になります。

したがって、2つの異なるスレッドからの同時アクセスを防ぐために、外部インターロックを提供する必要があります。プログラムロジック自体がこれを防ぐ場合もあれば、明示的なロックメカニズムを実装する必要がある場合もあります。

于 2012-08-08T19:22:47.480 に答える