2013-04-14 98 views
0

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

我该如何设计我的实体?我应该有一个与关系的颜色实体吗?

回答

2

是的,我会建议建立一个颜色实体和一对多的关系colors实体颜色

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

如果颜色实体具有name属性,你可以找到具有彩色物体与

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

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

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

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

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

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

+0

感谢您的咨询! – Pierre