如何参考CoreData中同一实体的单个属性更新实体的属性?

Posted

技术标签:

【中文标题】如何参考CoreData中同一实体的单个属性更新实体的属性?【英文标题】:How do I update the attributes of an entity with reference to a single attribute of the same entity in CoreData? 【发布时间】:2012-08-25 02:25:30 【问题描述】:

我的问题类似于此链接上的问题:Creating a CoreData entity based on attribute evaluation

我刚刚开始编写我的第一个使用 Core Data 的项目,其中我有 5 个实体,即公司、会议、议程、子议程和会议纪要。 公司将与会议相关,每次会议都应与其“议程”和“会议纪要”相关......随后会议的每个议程都应与其“子议程”相关

以下代表我项目的基本数据模型:

公司 标题:字符串

会议 标题:字符串 日期:日期

议程 名称:字符串

子议程 名称:字符串

分钟 名称:字符串

我需要以这样一种方式进行编码,即如果有关这些实体中的任何属性的任何信息发生更改,则必须对其进行同步。它涉及为每个实体创建新的属性值或更新现有的属性值。为此我计划为每个实体设置一个名为 ID 或标签的属性,这样一旦我设置了每个实体之间的关系,我就可以参考该唯一标签值来更新实体的所有其他属性值。

如果我的问题令人困惑,请原谅我。如果您能理解,请告诉我我打算做的事情是否正确。我完全不知道编码部分,但我认为如果有人可以帮助我处理用于类似要求的示例,我可以管理。

【问题讨论】:

【参考方案1】:

您以错误的方式处理此问题。您的“标签值”实际上只不过是传统数据库编程中的所谓外键。

但Core Data 不是“数据库”,它是一个对象图。因此,您不需要使用这些外键,您只需在实体之间建立关系,其他一切都在幕后发生。

因此,要更改属性,只需这样做:

agenda.name = @"New agenda name";
subagenda.agenda.meeting.title = @"New Meeting Title";

因此无需通过外键更新任何内容。欢迎来到 Core Data 的精彩世界。

请阅读Core Data Programming Guide 以掌握这些概念。

【讨论】:

[reply:mundi] 谢谢,我要记住 core-data 不像 sql 数据库,它只是一个对象图。但是我仍然对如何更新属性值有疑问。我希望我的代码准确指向要更新的实体的属性,因为我不需要更新与之相关的其他实体的任何其他属性值。 核心数据完全符合您的描述。 [reply:mundi] 谢谢伙计,我几乎完成了核心数据的实现,是的,太棒了。

以上是关于如何参考CoreData中同一实体的单个属性更新实体的属性?的主要内容,如果未能解决你的问题,请参考以下文章

如何更新CoreData中另一个实体的子实体

使用 Coredata 一起更新特定值(在所有表中通用)

Restkit/CoreData - 更新实体的属性不会更新 UITableView

更新CoreData模型版本时如何为实体的新属性设置默认值

CoreData 删除单个对象

CoreData Parent Children 使用单个实体的一对多反向关系