2011-12-28 10 views
0

私はsqliteベースのiphoneアプリケーションのためにFMDatabaseを使用しています。問題は、アプリケーションが大量のデータをWebサービスから取得し、UI [メインスレッド]をブロックしているローカルのsqliteデータベースに挿入していることです。また、バックグラウンドスレッドでsqlite関連のコマンドを実行することはできません。ここでNSOperationを使用できますか?すべての例??FMDatabaseとNSOperation

答えて

1

SQLite操作をバックグラウンドで実行できるのは、スレッド内でのみ実行し、メインスレッドや他のスレッドから実行しない限りです。

これを処理するには、同時操作の最大数を1に設定して、一度に1つのSQLiteに書き込むことを確実にしてから、NSInvocationOperationsを呼び出してデータを保存します。

NSInvocationOperation * invocation = [[NSInvocationOperation alloc] initWithTarget:self selector:@selector(writeThisToDB) object:thisObject]; 

[operationQueue addOperation:invocation]; 
関連する問題