核心数据managedObjectContext未随UI更改而更新

时间:2013-08-08 01:19:26

标签: objective-c macos core-data interface-builder nsmanagedobjectcontext

使用绑定到核心数据NSManagedObjects的UI控件更新核心数据对象时,我突然遇到一个奇怪的问题。

症状如下: - OutlineView显示分层对象列表 - 详细视图显示所选对象的数据字段,包括文本字段,日期等。 - 在详细视图中进行更新时,这些更新将反映在OutlineView中(例如,在OutlineView中使用diplayName)。 - 但是当我保存更改时,managedObjectContext告诉我没有要保存的更改。因此,由于某种原因,UI不会让上下文知道事情已经发生了变化。 - 鉴于绑定是在IB中完成的,我假设UI中的任何更改都会自动反映在managedObjectContext中 - 由于某种原因,其中一个字段似乎总是导致上下文识别已经进行了更改而不是其他更改。这一个字段恰好是一个弹出列表,其中包含来自核心数据数据库中另一个实体的对象。

如果有人对可能造成这种情况的原因有任何暗示 - 有没有办法监控何时进行UI更改,例如更改文本字段中的文本,以及这些更改是否传播到managedObjects。

EDIT 发现问题 - 由于某种原因,我已经在核心数据实体的objective-c类中将@dynamic中的一些属性更改为@synthesize。这破坏了事情!

1 个答案:

答案 0 :(得分:0)

IBOutlets需要连接到回调,以便知道更改。除非您将其更改,否则他们不会报告更改。因此,即使textField.text!= oldText,除非您进行更新,将其保存到实体,然后查看是否识别

,否则无关紧要