1

ドキュメント ディレクトリ内のファイルを一覧表示するデータベースがあります (目的の c - コア データ)。このリストは、プログラムを開くたびに更新されます。ファイル数が 700 の場合、プログラムを開くのに 30 秒かかり、その間ボタンをクリックしてもまったく反応しません。

バックグラウンドでこれを行う方法が見つかりませんでした。ゆっくりとプロセッサ (CPU) を強制する方法はありますか? そのため、ユーザーがプログラムを使用している間は、バックグラウンドで更新します。

- (void)Reload_Data    
{
      id delegate = [[UIApplication sharedApplication] delegate];

      NSManagedObjectContext *context = [delegate managedObjectContext];

       NSDirectoryEnumerator *directoryEnumerator = [[NSFileManager defaultManager] enumeratorAtPath:kDocdir];

    for (NSString *pathi in directoryEnumerator){
        NSString *path = [self kDoc_dosya:pathi];

        NSError *error_iki;
        NSDictionary *file_propery = [[NSFileManager defaultManager] attributesOfItemAtPath:path error:&error_iki];

        if (!error_iki && ![[path lastPathComponent] hasPrefix:@"."] && [file_propery fileType] != NSFileTypeDirectory) {

           NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
           NSEntityDescription *entity = [NSEntityDescription entityForName:Parcalar_s inManagedObjectContext:context];
           [fetchRequest setEntity:entity];

            NSPredicate *predicate = [NSPredicate predicateWithFormat:@"url LIKE [cd] %@",[self Doc_Sil:path]];
            [fetchRequest setPredicate:predicate];
            [fetchRequest setFetchBatchSize:1];
            [fetchRequest setFetchLimit:1];

            NSError *error = nil;
            NSArray *fetchedObjects = [context executeFetchRequest:fetchRequest error:&error];

            if (!error && [fetchedObjects count] < 1) {
               Parcalar *parca = (Parcalar *)[NSEntityDescription insertNewObjectForEntityForName:Parcalar_s inManagedObjectContext:context];
               parca.url = [self Doc_Sil:path];

                AVURLAsset *asset = [[AVURLAsset alloc] initWithURL:[NSURL fileURLWithPath:path] options:nil];
               NSUInteger suresi = CMTimeGetSeconds(asset.duration);
               parca.sure = [NSNumber numberWithInteger:suresi] ;

            }
        }
   }


    NSError *error = nil;   if (![[self fetchedResultsController] performFetch:&error]) [self Alert_Uyari:[NSString stringWithFormat:@"Unresolved error %@, %@", error, [error userInfo]]];

}
4

1 に答える 1