0

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

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

4

1 回答 1

2

是的,我建议创建一个Colorcolors实体和从您的EntityColor的一对多关系。

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

如果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颜色条目添加属性,核心数据编程指南中的“非标准持久属性”中描述了各种策略。

于 2013-04-14T08:57:51.650 回答