2010-06-12 7 views
0

가 변경 될 때 나는 세 가지 속성은 시작일, 종료일 및 기간을 가진 코어 데이터 엔터티가 있습니다. 세 가지 속성은 모두 영구 속성입니다. startDate 및 endDate 값이 변경 될 때마다 duration 속성을 계산하고 업데이트 할 수있는 방법을 알고 싶습니다. 내 테이블보기에서 정렬 속성을 사용해야하기 때문에코어 데이터 변경의 속성 값을 다른 속성

BTW, 나는 일시적인 속성과 시간을 만들 수 없습니다?

은 어떤 도움이 크게

감사합니다, Javid

답변

0

, 당신은 엑스 코드가 당신의 엔티티에 대한 관리 객체 클래스를 생성 할 수 있도록해야합니다. .m 파일을 살펴보면 속성은 모두 @dynamic로 선언됩니다. 즉, 선언하지 않은 접근 자 메서드는 동적으로 생성됩니다. 여전히 동적 "수"와 "원시"방법에 의존하면서

이제,의 startDate와 endDate가 사용자 정의 setter를 선언 할 수 있습니다. 기본 방법은 핵심 데이터가 "기본 사항"에서 사용하는 것이지만 이제는 호출해야합니다.

- (void)setStartDate:(NSDate *)newStartDate 
{ 
    // This part replicates what a dynamic setter would do 
    [self willChangeValueForKey:@"startDate"]; 
    [self setPrimitiveStartDate:newStartDate]; 
    [self didChangeValueForKey:@"startDate"]; 

    // Now, calculate your new duration 
    calculatedDuration = ... 

    // Set the duration property 
    self.duration = calculatedDuration; 

} 
0

두 가지 옵션 감사 :

  • 재정의 세터를하고 시간이 다른 세터가 호출 될 때 업데이트되는 원인을;

  • 사용 KVO 변경 통지하고 기간을 업데이트합니다.

최상의 솔루션은 앱 디자인에 따라 다릅니다. 아직 수행하지 않은 경우

관련 문제