ios - 带集合的核心数据实体

标签 ios objective-c core-data entity-relationship

我有一个包含许多字段的核心数据实体。其中一个应该包含预定义颜色的列表。稍后我希望能够对这些颜色中的一种或多种应用谓词(例如:查找具有黑色和绿色的对象)。我的颜色列表将是静态的。

如何设计我的实体?我应该有一个 Color 实体与 relationship 吗?

最佳答案

是的,我建议创建一个 Color 实体和一个从 EntityColor< 的多对多关系 colors/em>.

如果它是预定义颜色的静态列表,您可以创建 创建持久存储时为实体着色。或者,您可以在应用程序启动时“查找或创建”颜色实体。

如果 Color 实体具有 name 属性,您可以找到具有颜色的对象

[NSPredicate predicateWithFormat:@"ANY colors.name = %@", @"red"];

要检查两种颜色,您可以使用

[NSPredicate predicateWithFormat:@"(ANY colors.name = %@) AND (ANY colors.name = %@)", @"black", @"green"];

或(我希望这是正确的:-):

NSArray *colorNames = @[@"black", @"green"];
[NSPredicate predicateWithFormat:@"SUBQUERY(colors, $c, $c.name IN %@).@count >= 2", colorNames];

您还可以(如果需要)将 UIColor color 属性添加到 Color 条目,各种 核心数据编程指南中的“Non-standard Persistent Attributes”中描述了这些策略。

关于ios - 带集合的核心数据实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15997216/

相关文章:

ios - UITableviewCell 动态高度 - 自动布局问题

iphone - 为什么我的 iPhone 应用程序无法调用委托(delegate)方法

ios - 如何在 Swift 中使用协议(protocol)公开 Objective-C 对象的私有(private)类方法?

ios - RestKit - 没有对象映射的请求

ios - CoreData NSFetchRequest 返回结果但对象的节数返回 0

ios - 如何在 iPhone 上控制硬件麦克风输入增益/电平?

objective-c - 与数十万个单词进行比较时,查看单词是否存在的有效方法是什么?

objective-c - 如何从 XML 元素获取属性

ios - 从关系数据快速创建核心数据关系 (iOS)

ios - 使用 UICollectionView 继续