我有一个核心数据的Master / Detail应用程序。我是关于核心数据的新手,所以我不明白为什么当我添加新实体并context.save(&error)
返回false
时(例如因为我没有设置非可选项)属性)虽然没有保存对象,但调用了func controller(controller: NSFetchedResultsController, didChangeObject anObject: AnyObject, atIndexPath indexPath: NSIndexPath?, forChangeType type: NSFetchedResultsChangeType, newIndexPath: NSIndexPath?)
方法。
任何人都可以帮助我理解?
答案 0 :(得分:2)
由于您正在使用NSFetchedResultsController ALL 更改您正在使用的上下文,因此会将其发送到NSFetchedResultsController。 NSFetchedResultsController侦听上下文而不是商店。
当您调用save方法时,数据仅持久保存到数据库(persistentStore的示例)。但是,当调用save方法时,上下文会更新。当我的UITableView变慢时,我也想到了这一点,因为NSFetchedResultsController正在更新我的单元格两次。 首先将对象添加到上下文中,但是当您保存时,它会再次更新上下文。
我采取的措施是为后台操作实现第二个上下文,只有当我在后台上下文中保留更改时,我才会将它们发送到前台,这样我的UI只会更新一次。
也许您可以查看以下链接,看看您是否需要类似的解决方案。这个链接最清楚地向我展示了发生了什么以及我需要什么。