1

我正在尝试让 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 次点击添加或删除按钮,它就会崩溃。此外,当它第一次加载时,您可以在加载数据库之前添加,这会产生错误。

4

0 回答 0