我正在尝试让 CoreData 工作,所以我为自己制作了一个小测试应用程序。一切正常,除了一种类型的项目 - 打开(或保存或关闭)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 次点击添加或删除按钮,它就会崩溃。此外,当它第一次加载时,您可以在加载数据库之前添加,这会产生错误。