2012-05-10 70 views
0

我有一個核心數據實體,我創建了一個NSManagedObject子類。假設它在實體「List」中有一個屬性「attrib1」。在我的子類中,在某些情況下,我想計算attrib1的值,在其他情況下,我想從數據庫中返回值。我想弄清楚如何從我的方法中返回數據庫值。 實施例:核心數據從子類中檢索NSManagedObject屬性

- (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)]; 
    } 
} 

我應該如何檢索來自其是用於attrib1吸氣劑的NSManagedObject子類方法中的屬性「attrib1」的值。

感謝

回答

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文檔:https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/CoreData/Articles/cdAccessorMethods.html

相關問題