首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >删除具有多个关系核心数据iOS的上下文中的nsmanagedboject

删除具有多个关系核心数据iOS的上下文中的nsmanagedboject
EN

Stack Overflow用户
提问于 2012-09-22 13:57:39
回答 1查看 518关注 0票数 1

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

以下是我的设计:

  • 实体1:

类别(属性: categoryID、标题、显示、位置)和与新闻实体的关系称为“新闻”。

“新闻”关系有目的地是“新闻”,反向关系是“类别”,类型对-多关系和删除规则是层叠的。

  • 实体2:

新闻(属性: newsID,引文,内容,链接)和一个名为“类别”的分类实体的关系。

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

对象图如下所示:

新闻<

我的问题是:

1> 是我设计的模型是好的?

如果我从2>上下文示例中删除一个新闻对象,则对设计的模型进行编码,如下所示:

id newsObjectToDelete =.managedObjectContext删除对象:新闻对象;

newsObjectToDelete所属的分类对象是否自动从关系“新闻”的NSSet中删除newsObjectToDelete。

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

提前谢谢。对不起,英语很差

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-09-22 16:09:44

  1. 很难说这是否适合你的应用程序,但它看起来是一个相当标准的关系。
  2. 如果删除一个对象,它将自动从所有核心数据关系中删除。不要担心对某个已删除对象的悬空引用,Core数据为您处理。
  3. 核心数据实际上只能生成错误(并阻塞保存)或在保存期间采取一些自动操作。您可以执行以下任一操作:
代码语言:javascript
复制
- **In Your Data Model**: Using the data model editor, uncheck "Optional" for this relationship, and/or set the "Minimum" count to 1:

代码语言:javascript
复制
- **In Your "News" Subclass**: If you need more fine-grained control and/or error reporting, you can check this during [validation](https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/CoreData/Articles/cdValidation.html#//apple_ref/doc/uid/TP40004807-SW3) (to generate an error) or maybe take some automatic actions [during the save process](https://developer.apple.com/library/mac/documentation/Cocoa/Reference/CoreDataFramework/Classes/NSManagedObject_Class/Reference/NSManagedObject.html#//apple_ref/occ/instm/NSManagedObject/willSave).

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12544387

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档