我有一个奇怪的问题。我正在编写一个方法来处理带有核心数据的DB的创建,该核心数据首先检查db是否存在,然后才打开它(如果找到)或创建它(如果没有找到)。这是代码:
- (void) loadClubs
{
NSLog(@"Checking for club database.");
NSLog(@"file url: %@", self.clubDatabase.fileURL.path);
if(![[NSFileManager defaultManager] fileExistsAtPath:[self.clubDatabase.fileURL path]])
{
NSLog(@"Creating club database.");
//_clubDatabase saveToURL:<#(NSURL *)#> forSaveOperation:<#(UIDocumentSaveOperation)#> completionHandler:<#^(BOOL success)completionHandler#>
[self.clubDatabase saveToURL: self.clubDatabase.fileURL forSaveOperation: UIDocumentSaveForCreating completionHandler:^(BOOL success){
NSLog(@"test");
}];
//NSLog(@"Created new database.");
//[self fetchClubData:self.clubDatabase];
}
else if (self.clubDatabase.documentState == UIDocumentStateClosed)
{
NSLog(@"Opening club database.");
[self.clubDatabase openWithCompletionHandler:^(BOOL success)
{
NSLog(@"Opened club database.");
[self fetchClubData:self.clubDatabase];
}];
}
else if (self.clubDatabase.documentState == UIDocumentStateNormal)
{
[self fetchClubData:self.clubDatabase];
NSLog(@"Club database is open. Proceeding as normal.");
}
}
但我有一个非常奇怪的问题:当我调用[self.clubDatabase saveToURL:self.clubDatabase.fileURL forSaveOperation:UIDocumentSaveForCreating completionHandler:^(BOOL success)时...完成处理程序不执行!!我完全不知道造成这种情况的原因。有什么想法吗?
我试过了:
我不知道造成这种情况的原因。有什么想法吗?
非常感谢!!
-Andrew
答案 0 :(得分:0)
仅供参考,对于其他经历类似事情的人,我想我已经有了“啊哈!”时刻。似乎saveToURL异步运行,因此在此方法(顺序)之后调用的viewcontroller中的错误可能导致崩溃,从而防止完成处理程序被调用。我必须验证这一点,但这是唯一有意义的事情。