У меня есть следующий код, который используется в моем контроллере представления всякий раз, когда установлено его свойство «документ» (типа UIManagedDocument
).
Я не уверен, что это делают другие люди, но я нахожу понятие параллелизма в Core Data очень запутанным, документы объясняют его, но все еще трудно понять. По этой причине мне было интересно, есть ли у людей какие-либо идеи о том, как ускорить код, который я использую для сохранения только что установленного 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];
}