gpt4 book ai didi

ios - 删除 MagicalRecord 中的实体不会持久存在

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:18:28 25 4
gpt4 key购买 nike

我在使用 MagicalRecord 时遇到了一个奇怪的问题。删除不会持续存在。当我删除时,NSFetchedResultsControllerDelegate 正确地看到该对象已被删除。但是,如果我关闭并重新打开应用程序,该实体会重新出现。

我用来删除实体的代码是:

ActivityType *activityType = [_fetchedResultsController objectAtIndexPath:indexPath];
[activityType deleteInContext:[NSManagedObjectContext MR_defaultContext]];
[[NSManagedObjectContext MR_defaultContext] MR_saveToPersistentStoreAndWait];

我用来设置 NSFetchedResultsController 的代码是:

NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription
entityForName:@"ActivityType" inManagedObjectContext:[NSManagedObjectContext defaultContext]];
[fetchRequest setEntity:entity];

NSSortDescriptor *sort = [[NSSortDescriptor alloc]
initWithKey:@"name" ascending:YES];
[fetchRequest setSortDescriptors:[NSArray arrayWithObject:sort]];

NSFetchedResultsController *theFetchedResultsController =
[[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest
managedObjectContext:[NSManagedObjectContext defaultContext] sectionNameKeyPath:nil
cacheName:@"activityTypes"];
_fetchedResultsController = theFetchedResultsController;
_fetchedResultsController.delegate = self;

根据其他 SO 帖子,我还尝试在设置和删除中使用 [NSManagedObjectContext rootSavingContext](但无济于事)。

最佳答案

我在核心数据方面经历了 hell 般的考验,我学到了一些东西。我累了,所以我会写一个简短的总结。

  1. 当您删除一个实体时,Core Data 可能会因为您的删除规则而拒绝它。我的删除没有通过的原因是因为它需要级联但是它被取消了。我认为这与以某种方式遗弃实体有关。我不知道为什么这会导致阻止删除,但这就是我的情况。我发现它的方式是通过日志,我看到了一些关于引用的依赖实体的声明,我意识到删除规则将适用。

  2. 当日志显示有关严重错误和监听器的信息时,请检查 FRC 代码。由于这是监听器,因此您的罪魁祸首代码将在某处。就我而言,我禁用了 [tableview beginUpdates] 和 [tableview endupdates]。 FRC 实际上需要这个(我认为它是可选的)。否则,您会收到一些关于不一致和 managedobjectcontextlistener 以及如何添加或删除行等的错误。

  3. 当您删除时,它实际上可能会保存到内存本地上下文中,但可能不会保存到持久存储中。这意味着 FRC 委托(delegate)代码将看到更改,但可能不会保存。此外,内存存储可能不会在通过我的时进行删除规则检查。但持久存储将进行检查。得再看看这个。

关于ios - 删除 MagicalRecord 中的实体不会持久存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14992129/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com