0

プロパティ 'document' (タイプUIManagedDocument) が設定されているときはいつでもビュー コントローラーで使用される次のコードがあります。

他の人がそうしているかどうかはわかりませんが、コアデータの同時実行の概念は非常に混乱していると思います.ドキュメントはそれを説明しようとしていますが、それでも理解するのは難しいです. このため、新しいセットUIDocumentが存在しない場合に、新しいセットを保存するために使用するコードを高速化する方法について、人々がアイデアを持っているかどうか疑問に思っていました. 他の人が使用したい場合、このコードは機能します。

私の主な目標は、ドキュメントの保存と読み込みにかかる時間を大幅に短縮することです。現在、これを行うのに約 20 秒かかりますが、これは長すぎます!

[[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:YES];

if (![[NSFileManager defaultManager] fileExistsAtPath:self.documentDatabase.fileURL.path]) {
    [self.documentDatabase saveToURL:self.documentDatabase.fileURL
                    forSaveOperation:UIDocumentSaveForCreating
                   completionHandler:^(BOOL success) {
                       [[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:NO];

                       if (success) {
                           NSLog(@"Saved %@", self.documentDatabase.localizedName);

                           dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
                               [self.documentDatabase.managedObjectContext performBlockAndWait:^{
                                   dispatch_async(dispatch_get_main_queue(), ^{
                                       [Book newBookWithTitle:self.documentDatabase.fileURL.lastPathComponent.stringByDeletingPathExtension inManagedObjectContext:self.documentDatabase.managedObjectContext];

                                       [self saveDocumentWithCompletionHandler:^(bool success) {
                                           if (success) {
                                               [self setIsDocumentHidden:NO];
                                           }
                                       }];

                                       NSLog(@"Added default note to %@", self.documentDatabase.fileURL.lastPathComponent);
                                   });
                               }];
                           });
                       } else {
                           NSLog(@"Error saving %@", self.documentDatabase.fileURL.lastPathComponent);
                       }
                   }];
} else {
    [self openDocumentWithCompletionHandler:nil];
}
4

1 に答える 1