UIManagedDocument OpenWithCompletionHandler永远不会返回

我遇到了一个奇怪的问题。 我确信我在代码中的其他地方做了一些事情,并且没有正确closures或者什么东西,但现在它处于closures状态,但是当我调用OpenWithCompletionHandler时,它永远不会返回。 见下文:

//if the file is closed, open it and then set up the controller if (file.documentState == UIDocumentStateClosed){ //---- this code executes [file openWithCompletionHandler:^(BOOL success){ // ---- this code NEVER executes }]; } 

有任何想法吗?

使用UIManagedDocument在Xcode 4.5中查看iPhone Simulator 5.1中的Bug 。

我的解决scheme与报告的方法相同,但是我必须将我的应用的部署目标降低到iOS 5.0,以便“iPhone 5.0 Simulator”可用作运行目标。 我只看到这个问题试图使用iPhone 5.1模拟器与XCode 4.5.2,5.0和6.0模拟器工作。

我遇到了同样的问题。

你想打开viewDidLoad内的文件?

尝试将代码移到另一个方法。 它解决了我的问题。

在ViewController.h中

 @property (nonatomic,strong) NSManagedObjectContext *managedObjectContext; @property (nonatomic,strong) UIManagedDocument *document; 

在ViewController.m中

 @synthesize managedObjectContext = _managedObjectContext; @synthesize document = _document; - (void)viewDidLoad { [super viewDidLoad]; // Do not try to open the document here // Call another method instead :D if (!_managedObjectContext) { [self createContext]; } } - (void)createContext { NSFileManager *fileManager = [NSFileManager defaultManager]; NSURL *url = [[fileManager URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject]; url = [url URLByAppendingPathComponent:@"Database"]; self.document = [[UIManagedDocument alloc] initWithFileURL:url]; // FILE DOES NOT EXIST - Let's create a new one if (![[NSFileManager defaultManager] fileExistsAtPath:[url path]]) { [self.document saveToURL:url forSaveOperation:UIDocumentSaveForCreating completionHandler:^(BOOL success) { if (success) { self.managedObjectContext = self.document.managedObjectContext; } else { NSLog(@"ERROR: Cannot create new document"); } }]; // FILE IS CLOSED - Let's open it } else if (self.document.documentState == UIDocumentStateClosed) { [self.document openWithCompletionHandler:^(BOOL success) { if (success) { self.managedObjectContext = self.document.managedObjectContext; } else { NSLog(@"File is closed and it wont open!"); } }]; // FILE EXISTS AND IS OPENED - Yay! } else { self.managedObjectContext = self.document.managedObjectContext; } }