我正在努力让CoreData工作,所以我自己做了一个小测试应用程序。一切正常,除了1种类型的项目 - 打开(或保存或关闭)WithCompletionHandler。我希望处理程序在其他任何事情发生之前完成。代替将所有代码放在这里,我只是把问题发生在哪里。我一直试图让这个WithCompletionHandler工作很长一段时间,而我似乎无法理解如何使其余代码等到完成处理程序完成。
-(void)viewDidLoad
{
[super viewDidLoad];
[self.contactsDatabase openWithCompletionHandler:^(BOOL success)
{
if (success)
[self loadArrayFromFile];
}
}
-(IBAction)deleteButton:(id)sender
{
// I need this to NOT work until open is finished (or a previous save is finished)
// delete an item in the database
[self saveDatabase];
}
-(IBAction)addButton:(id)sender
{
// I need this to NOT work until open is finished (or a previous save is finished)
// add an item to the database
[self saveDatabase];
}
在设备上,如果连续10次点击添加或删除按钮,则会崩溃。此外,当它首次加载时,您可以在加载数据库之前添加,并且会产生错误。