在coredata中使用filterpredicate选择nsmanagedobject的子集

时间:2013-04-03 20:42:52

标签: core-data nsmanagedobject

有一个带有Coredata数据模型的项目。每个类都与Type有关系。类型包含属性'content',以及其他attrs。

可以用关系建模

Element
  dimensions
  colors
  ...

Colors
    type----->ColorType
                content

Dimension
   quantity
   unit
   type ----->DimensionType
               content
Unit
   type ----->UnitType
               content

...

ObjectX
   type ----->TypeX
               content

我没有多种类型,而是更喜欢以下

Super
 type -----> Type
              content


Unit isa Super
Dimension isa Super
...
ObjectX isa Super

检索nsmanagedobjects的子集似乎很简单,其中属性包含匹配的字符串,例如通过FilterPredicate的属性ownersClassname。

Super
 type -----> Type
              content
              ownersClassName

DimensionType可能是'length','width','height' ColorType可能是'hex','rgb',cymk' UnitType可能是'mm','cm','inch'等。

元素可能有一对多维度,颜色等。用户不需要输入'mm','rgb',因此需要特定的下拉菜单。并且需要灵活地预测模型中的变化,否则会破坏DBMS。

问题:

当用户添加新的Type时,如何将此OwnerClassName字符串设置为'Unit','Dimension','Color',以便FilterPredicate可以在第一时间过滤...

1 个答案:

答案 0 :(得分:0)

您可以在模型类的awakeFromInsert期间为关系设置默认对象值。

您可以缓存默认值,这样就不会在每次插入时从商店中重新获取对象。