2012-05-10 9 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のgetterですNSManagedObjectのサブクラスのメソッド内から属性「attrib1」の値を取得する必要があります。手つかずのままにしておく必要があり、この場合のattrib1に -

おかげ

答えて

1

まず、それが計算された値を返すか、データベースからフェッチする他のプロパティを作成する方が良いでしょう。また、ゲッターの実装がいくつかありません。だから、例のコードは次のようになります。

また
-(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を。

関連する問題