【问题标题】:Core Data managedObjectContext not being updated with UI changes核心数据 managedObjectContext 未随 UI 更改而更新
【发布时间】:2013-08-08 01:19:25
【问题描述】:

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

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

如果有人对可能导致此问题的原因有所了解 - 是否有任何方法可以监控何时进行 UI 更改,例如更改文本字段中的文本,以及这些更改是否传播到 managedObjects。

编辑 发现了问题——出于某种原因,我在核心数据实体的objective-c 类中将一些属性从@dynamic 更改为@synthesize。这太糟糕了!

【问题讨论】:

  • 我想我找到了问题。

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


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-10-28
    • 2017-02-18
    • 2020-08-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多