我有一个核心数据实体,我创建了一个NSManagedObject子类。假设它在实体“列表”中有一个属性“attrib1”。在我的子类中,在某些情况下我想计算attrib1的值,在其他情况下我想从数据库中返回值。我试图弄清楚如何从我的方法中返回数据库值。 例如:
- (NSString *)attrib1 {
if (flag) {
return [self calculateValue];
} else {
// return value from core data, ie pass thru, but how?
// Attempt1:
return [super attrib1]; // Fails with 'unrecognized selector'
// Attempt2. Ends up calling this method again, recursion loop
return [super performSelector:@selector(attrib1)];
}
}
如何从NSManagedObject子类方法中检索属性“attrib1”的值,该方法是attrib1的getter。
由于
答案 0 :(得分:1)
首先,最好使其他属性返回计算值或从数据库中获取 - 在这种情况下,attrib1应保持不变。你也错过了一些getter的实现。因此,示例代码应如下所示:
-(NSString *)attrib1 {
NSString *v;
[self willAccessValueForKey:@"attrib1"];
if(flag)
v=[self calculateValue];
else
v=[self primitiveAttrib1];
[self didAccessValueForKey:@"attrib1"];
return v;
}
另请参阅Apple doc:https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/CoreData/Articles/cdAccessorMethods.html。