iOS Core Data:使用 Foundation 对象添加属性

Posted

技术标签:

【中文标题】iOS Core Data:使用 Foundation 对象添加属性【英文标题】:iOS Core Data: Adding attributes with Foundation objects 【发布时间】:2015-07-05 17:08:11 【问题描述】:

我正在使用 Core Data 框架构建一个 ios 应用程序。

现在我已经熟悉 Core Data 实体和关系,但我想知道是否有办法声明任何具有 iOS Foundation 框架对象的 Core Data 实体。

例如,我希望 Core Data 实体具有 NSSet 实体,例如:

Foo *foo = [NSEntityDescription insertNewObjectForEntityForName:@"Foo" inManagedObjectContext:managedObjectContext];
NSSet *set = foo.set;
for (NSString *string in set) 
    // do something

有什么方法可以使用 Core Data 框架实现这一点?

【问题讨论】:

【参考方案1】:

有一种方法可以做到这一点,但我不会告诉你,因为这听起来不像是解决你问题的正确方法。

您说您熟悉核心数据实体和关系,所以请使用它们!

您可以给它一组Bar 对象,而不是拥有一组字符串的Foo 对象,其中每个Bar 对象都有一个字符串属性。您可以通过使用级联删除规则使 Foo 实体与 Bar 具有无序的多对多关系在 Core Data 中对此进行建模,其中反向是使用无效删除规则的一对一关系。

如果您发现使用 NSFetchRequest 可以轻松高效地执行数据集的复杂查询,您会非常感激在 Core Data 中明确建模您的数据。

【讨论】:

感谢您的回答。像你提到的那样使用另一个实体更合理,但是除了使用for 语句和NSSet 属性之外,运行两次获取请求是否更容易理解? 我不明白你所说的“更多理解”是什么意思。 您仍然可以使用for in 语法。每个Foo 对象都有一个NSSet 类型的属性,并且该集合中的每个对象都是一个Bar 对象。

以上是关于iOS Core Data:使用 Foundation 对象添加属性的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Core Data 和 iOS 5 存储指南?

iOS:Swift:Core Data:值不使用 Private ManagedObjectContext 存储

ios 如何正确使用 NSPredicate 来匹配 Core Data 的 NSString?

iOS:将 GCD 与 Core Data 结合使用

iOS 使用关系检索和排序 Core Data 实体

iOS开发过程中使用Core Data应避免的十个错误