我有以下代码,只要设置了属性“document”(类型为UIManagedDocument
),我就会在View Controller上使用该代码。
我不确定其他人是否这样做,但我发现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];
}
答案 0 :(得分:0)
即使延迟完全在框架代码中,有时通过深入了解时间配置文件,您可以获得一些暗示它正在做的事情,这需要花费很长时间。例如,它只是切线相关,但通过这样做我发现保存在iCloud上同步的UIManagedDocuments在数据模型中存在反向关系时完全被破坏了性能。