Core Data从子类中检索NSManagedObject属性

时间:2012-05-10 03:11:33

标签: core-data attributes nsmanagedobject

我有一个核心数据实体,我创建了一个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。

由于

1 个答案:

答案 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