gpt4 book ai didi

swift - 实体保存失败时调用的 NSFetchedResultsController didChangeObject 方法

转载 作者:行者123 更新时间:2023-11-28 13:09:50 24 4
gpt4 key购买 nike

我有一个带有核心数据的主/细节应用程序。我是核心数据的新手,所以我不明白为什么当我添加一个新实体时 context.save(&error) 返回 false (例如因为我不t 设置非可选属性)func controller(controller: NSFetchedResultsController, didChangeObject anObject: AnyObject, atIndexPath indexPath: NSIndexPath?, forChangeType type: NSFetchedResultsChangeType, newIndexPath: NSIndexPath?) 方法被调用,尽管对象是未保存。

谁能帮我理解一下?

最佳答案

因为您正在使用 NSFetchedResultsController,所以您正在使用的上下文的所有更改都会发送到 NSFetchedResultsController。 NSFetchedResultsController 监听上下文,不是商店

当您调用 save 方法时,数据只会持久化到数据库中(一个 persistentStore 的例子)。但是,当调用 save 方法时,上下文会更新。当我的 UITableView 变慢时,我也发现了这一点,因为 NSFetchedResultsController 正在更新我的单元格两次。 首先您将对象添加到上下文中,但是当您保存时,它会再次更新上下文。

我所做的补救措施是为后台操作实现第二个上下文,只有当我在后台上下文中持久化更改时,我才会将它们发送到前台,这样我的 UI 只会更新一次。

也许您可以查看以下链接,看看您是否需要类似的解决方案。这个链接最清楚地向我展示了发生了什么以及我需要什么。

关于swift - 实体保存失败时调用的 NSFetchedResultsController didChangeObject 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31747101/

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