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 对象添加属性的主要内容,如果未能解决你的问题,请参考以下文章
iOS:Swift:Core Data:值不使用 Private ManagedObjectContext 存储