我有两个实体,项目和类别。每个项目都有一个类别,一个类别可以有 0-多个项目。
我有一个特殊的类别,杂项类别。我用一个布尔属性 isMisc 来表示它,所以 category.isMisc=YES。
当我删除一个类别时,我想将它的任何项目重新分配给“misc”类别。所以我为项目编写了以下自定义设置器:
- (void)setCategory:(Category *)category
{
[self willChangeValueForKey:@"category"];
if (category == nil) {
category = [Database theMiscCategory];
}
[self setPrimitiveValue:category forKey:@"category"];
[self didChangeValueForKey:@"category"];
}
问题是,[Database theMiscCategory] 执行提取,我认为这是不鼓励的。还有另一种方法可以做到这一点吗?
我只看过让 item.category = nil,但这在代码的其他领域引入了足够的复杂性,我更愿意有一个“杂项”类别。