ドキュメントディレクトリからファイルを読み取り、解析し、ファイルを削除してから、docディレクトリから次のファイルを読み取り、解析し、削除する長時間実行タスクがあります。このコードをバックグラウンドに配置しようとしていますが、問題があります。私はこれまでのところ:
(疑似コード)
while (fileExistsInDocDirectory) {
NSOperationQueue *queue = [[NSOperationQueue alloc] init];
[queue setName:@"LongTask"];
[queue addOperationWithBlock:^{
parseSuccessful = [self doLongTask];
}];
[queue addOperationWithBlock:^{
[[NSOperationQueue mainQueue] addOperationWithBlock:^{
[self updateProgress];
}];
}];
}
FMDB を使用しているため、doLongTask が db に行を挿入しているため、1 つのファイルに対してのみ機能します。そのため、次のキューが入ってきてそのデータを挿入しようとしたときに、データベースが既に使用されている場合、それは機能しません。while ループ内で最初のキューが終了するまで、2 番目のキューを実行できませんか? 従属キューの設定についていくつか見ましたが、NSOperation をサブクラス化せずにそれを行う簡単な方法があるかどうかはわかりませんでした。ありがとう!