iOS:托管对象关系的属性已更改,但托管对象没有注意到

Posted

技术标签:

【中文标题】iOS:托管对象关系的属性已更改,但托管对象没有注意到【英文标题】:iOS: Property of managed objects relationship has changed, but managed object doesn't notice 【发布时间】:2015-04-07 19:35:56 【问题描述】:

除了我已经解决的获取结果控制器问题之外,我找不到任何关于此的内容。

但是这里我有这个问题:

我的视图控制器(我们称之为 MyVC_A)有一个属性 PointOfInterest *poi。这个实体PointOfInterest 与实体Category 有关系,称为“belongsToCategory”并且是n-1。所以一个 PointOfInterest 只属于一个类别。因此,如果您在 MyVC_A 中选择一个代表一个 PointOfInterest 的表格单元格,您将获得下一个显示所有可用类别的视图控制器。如果您现在更改类别的选择并将此视图控制器弹出回来,MyVC_A 中的 belongsToCategory 属性并没有改变,即使我将所有标签和图像代码放入 viewWillAppear 方法。

所以我知道该属性已更改并已正确保存在上下文中,但未显示任何更改。我有点知道为什么,但我能做些什么呢?如何“刷新” MyVC_A 中的 PointOfInterest 对象以显示更改?

【问题讨论】:

你能给我们看看代码吗?如果您使用的是 fetchedResultsController,则委托方法可能是一个不错的起点。例如,您是如何实现 -controllerDidChangeContent 的? 【参考方案1】:

您需要在获取的结果控制器上调用 performFetch:,然后在 tableview 上调用 reloadData

【讨论】:

以上是关于iOS:托管对象关系的属性已更改,但托管对象没有注意到的主要内容,如果未能解决你的问题,请参考以下文章

iOS 16 中 CoreData 托管对象发生变化但其衍生 (Derived) 属性在 SwiftUI 中不刷新的解决

iOS 16 中 CoreData 托管对象发生变化但其衍生 (Derived) 属性在 SwiftUI 中不刷新的解决

在 NSFetchedResultsController 中更改托管对象的属性

核心数据对象在其相关对象的属性更改时更新

一行代码解决CoreData托管对象属性变更在SwiftUI中无动画效果的问题

更改托管对象属性不会触发 NSFetchedResultsController 更新表视图