在我的CoreData模型中,我有一个具有20个属性的实体Article
和一个子实体Variant
,其中一对一关系为“master”到Article
。因此Variant
具有Article
父类的所有属性,但我希望如果属性为nil
,则getter应返回主Article
的一个。
在代码中:
- (NSString *)getSomeAttribute {
NSString *tmp = self.someAttribute;
if (tmp == nil)
tmp = self.master.someAttribute;
return tmp;
}
我不想写这样的20个getter,有没有办法一次为所有属性写一个“通用”getter?
答案 0 :(得分:0)
您不能跳过getter,因为如果您不实现它们,Core Data将生成它们。您可以做的是将所有自定义代码分解为一个核心方法,并让其他getter调用它。你仍然最终得到一堆吸气剂,但他们只是单线。这样的事情(警告,输入网页浏览器而不是编译):
- (id)valueForKeyFromSelfOrMaster:(NSString *)key
{
[self willAccessValueForKey:key];
id value = [self primitiveValueForKey:key];
[self didAccessValueForKey:key];
if (value == nil) {
value = [self.master valueForKey:key];
}
return value;
}
- (NSString *)someAttribute
{
return [self valueForKeyFromSelfOrMaster:@"someAttribute"];
}