2012-05-10 6 views
0

У меня есть основной объект данных, и я создал подкласс NSManagedObject. Скажем, у него есть атрибут «attrib1» в сущности «Список». В моем подклассе в некоторых случаях я хотел бы рассчитать значение атрибута1, в других случаях я хотел бы вернуть значение из базы данных. Я пытаюсь выяснить, как вернуть значение базы данных из моего метода. Пример:Основные данные извлекают атрибут 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.

Смежные вопросы