Ios 为什么UIManagedDocument这么慢?
以下是一段相关代码:Ios 为什么UIManagedDocument这么慢?,ios,objective-c,core-data,uimanageddocument,Ios,Objective C,Core Data,Uimanageddocument,以下是一段相关代码: NSURL *url = [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject]; url = [url URLByAppendingPathComponent:@"Demo Document"]; UIManagedDocument *document = [[UIManagedDocument
NSURL *url = [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject];
url = [url URLByAppendingPathComponent:@"Demo Document"];
UIManagedDocument *document = [[UIManagedDocument alloc] initWithFileURL:url];
if (document.documentState == UIDocumentStateClosed) {
NSLog(@"file is closed");
NSLog(@"%@",[url path]);
NSDate *start = [NSDate date];
[document openWithCompletionHandler:^(BOOL success) {
if (success) {
NSLog(@"finished OPEN");
NSDate *methodFinish = [NSDate date];
NSTimeInterval executionTime = [methodFinish timeIntervalSinceDate:start];
NSLog(@"time = %f",executionTime);
self.managedObjectContext = document.managedObjectContext;
}
}];
}
“文件关闭”和“完成打开”之间的时间间隔为16.6秒。这是正常的行为吗?糟糕的编码?还是因为我在模拟器上运行
我不知道这是否重要,但文件只有50KB…这不是正常行为。您是否尝试过在“调试->iCloud->删除iCloud内容”下使用Xcode 5清除所有iCloud数据?这需要几分钟才能完全实现,但从头开始可能会有所帮助
如果您已经这样做了,那么您是否已经了解了对于临时保留的文档,还有哪些其他可能的工作?或者是其他东西阻塞了主线程?因为在主线程的事件队列返回之前,该块不会执行。信不信由你,这是正常的。这实际上与您的代码无关,但在您使用
autosave
时,它的工作原理或多或少是这样的。这种自动保存行为实际上在默认情况下是打开/启用的(您也可以将其关闭-但我强烈建议您不要这样做,除非您需要并且知道您正在做什么,呵呵)
无论如何,UIManagedDocument
实际上默认情况下会自动将数据保存到文档存储中,并在后台保存,但需要注意的是,它会在任何可能的时候(或者更好的时候,只要它愿意)执行此操作。要知道它是在后台为你做这件事的,这样你就不用担心它了(这是我非常喜欢的一个特性,但也可能会让你感到痛苦)
听起来您需要保存它,因为它没有显示您的数据,或者您没有看到预期的结果
如果是这样的话,那么我认为您应该更多地研究如何让它实际保存您的更改,以便它可以显示在您的控制器中。实际上,它实际上与UIManagedDocument的保存时间关系不大,更多的是与上下文的更新时间有关。如果确实如此,您可能会发现我对同一主题的不同主题/问题的回答很有帮助:
这可能不是你想要的,但我相信它至少会让你走上正确的道路