나는 Looji의 답변에 약간의 수정 사항을 게시하고 싶다.
@interface Marks : NSManagedObject
{
}
@property (nonatomic, retain) NSDecimalNumber * answerGradeA;
@property (nonatomic, retain) NSDecimalNumber * answerGradeB;
@property (nonatomic, retain) NSDecimalNumber * answerGradeC;
@property (nonatomic, readonly) NSDecimalNumber* total;
@end
@implementation Marks (Calculated)
- (NSDecimalNumber*) total {
return (3 * [self valueForKey:@"answerGradeA"]) + (2 * [self valueForKey:@"answerGradeB"]) + [self valueForKey:@"answerGradeC"];
}
+ (NSSet *)keyPathsForValuesAffectingTotal
{
return [NSSet setWithObjects:@"answerGradeA", @"answerGradeB", @"answerGradeC", nil];
}
@end
코어 데이터는 속성에 동적으로 값을 할당하기 때문에이 속성이 키 "answerGradeA"의 값인 지 알 수 있도록이 헤더 파일에 remaning 속성 [ "answerGradeA"등]을 "total"과 함께 선언 할 필요가 없습니다. 컴퓨팅하는 동안. –
아니요, 행복하게 컴파일러는 스스로 알아 내려고 충분히 똑똑합니다. 게다가 프로그래머가 쓰는 모든 라인은 잠재적 인 문제와 버그의 근원입니다. '더 적습니다'는 프로그래밍에서와 마찬가지로 실제와 같습니다. 핵심 데이터가 그 일을하고 필요한 경우 올바른 방향으로 만 이동하도록하십시오. –