gpt4 book ai didi

iphone - 从具有多对多关系核心数据 iOS 的上下文中删除 nsmanagedobject

转载 作者:行者123 更新时间:2023-11-29 13:28:17 25 4
gpt4 key购买 nike

我的模型有 2 个具有多对多关系的实体(类别和新闻):(这意味着一个类别可能有很多新闻,一篇新闻文章可能属于一个或多个类别)。

下面是我的设计:

  • 实体 1:

类别(属性:categoryID、title、show、position)与称为“新闻”的新闻实体的关系。

“news”关系的目的地是“News”,反向关系是“categories”,type to-many relationship 和 delete rule 是 cascade。

  • 实体 2:

新闻(属性:newsID、引用、内容、链接)以及与称为“类别”的类别实体的关系。

“类别”关系的目的地是“类别”,反向关系是“新闻”,类型对多关系,删除规则是无效的。

对象图如下所示:

新闻 <<---------------->> 类别

我的问题是:

1> 我设计的模型好吗?

2> 编码到我设计的模型,如果我从它的上下文示例中删除新闻对象,例如:

id newsObjectToDelete = ....[managedObjectContext deleteObject:newsObjectToDelete];

newsObjectToDelete 所属的Category 对象是否自动从关系“News”的NSSet 中删除newsObjectToDelete。

3> 如果我想限制一个“新闻”必须属于至少一个“类别”。如何实现这些约束

提前致谢。抱歉英语不好

最佳答案

  1. 很难说这是否适合您的应用,但它看起来像是一种非常标准的关系。

  2. 如果您删除一个对象,它会自动从所有 Core Data 关系中删除。不要担心对某些已删除对象的悬空引用,Core Data 会为您处理。

  3. Core Data 实际上只能生成错误(并阻止保存)或在保存期间采取一些自动操作。您可以执行以下任一操作:

    • 在您的数据模型中:使用数据模型编辑器,取消选中此关系的“可选”,和/或将“最小”计数设置为 1:

      Core Data 'Data Model Inspector' Screenshot

    • 在您的“新闻”子类中:如果您需要更细粒度的控制和/或错误报告,您可以在 validation 期间检查它(产生错误)或者采取一些自动操作 during the save process .

    请注意,使用验证(在模型中或在您的代码中)只会在开发和调试过程中有所帮助 - 在托管对象上下文上调用 -save: 将失败,返回 NO 并生成错误。这应该是最后的手段,实际上只是为了防止不良数据进入您的持久存储。像这样的验证失败告诉您代码的其他部分是错误的并且生成了错误的对象。

关于iphone - 从具有多对多关系核心数据 iOS 的上下文中删除 nsmanagedobject,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12544387/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com