【问题标题】:Core Data entity with set带有集合的核心数据实体
【发布时间】:2013-04-14 17:28:26
【问题描述】:

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

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

【问题讨论】:

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


    【解决方案1】:

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

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

    如果 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”中描述了策略。

    【讨论】:

      猜你喜欢
      • 2019-07-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多