2011-07-28 4 views
2

CoreData을 사용하는 간단한 iOS 응용 프로그램이 있습니다. 특별한 이유로 엔티티 값을 기준으로 UITableView에 내역 레코드를 표시해야합니다.CoreData 엔터티의 변경 내용 추적

필자는 값의 필드 x가있는 엔티티 A가 있다고 가정하고, 주어진 날짜에 A의 값을 xy로 변경했습니다.

UITableView에는 변경 날짜별로 그룹화 된 두 개의 레코드가 표시 될 것으로 예상됩니다.

25/07/2011 
A=x 
28/07/2011 
A=xy 

그래서 내가 무엇을 궁금해 나는 아직도 CoreData에 관한 분명히 잘못을 염두에 SQL로 생각하고, 그래서 내 마음에 오는 최초의 솔루션은 A. 에 관계 어쩌면 새로운 개체를 추가하는 것입니다 가장 좋은 방법은 CoreData입니다. 어쩌면 엔티티 또는 특정 datetime의 특정 속성의 스냅 샷을 저장하고 호출하는 편리한 메커니즘이 있습니다.

감사

답변

2

당신은 KVO (Key Value Observing)으로이 acheive 수 있습니다.

- (BOOL)validateValue:(id *)value forKey:(NSString *)key error:(NSError **)error

당신은뿐만 아니라 이들을 대체 할 수 있지만,에 권장하지 : 모든 NSManagedObject의 서브 클래스는 무시할 수 있습니다 때마다 전화를 얻을 수있는

- (void)didChangeValueForKey:(NSString *)key 또는

- (void)willChangeValueForKey:(NSString *)key

메소드 값은 특정 keypath에 대해 변경됩니다. 나는 이것이 당신의 문제를 해결할 것이라고 믿습니다. KVO 프로그래밍 가이드에서 KVO 주제 @http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/KeyValueObserving/KeyValueObserving.html에 대해 더 깊이 이해할 수 있습니다.

+0

감사합니다. 실제 문제는 변경 사항을 저장하는 방법과 위치입니다. – Leonardo

+0

변환 할 수 있고 이전 항목의 NSArray를 저장하고 속성 값이 변경 될 때마다 업데이트하는 Entity에 속성을 추가 할 수 있습니다. 또는 변경 타임 스탬프와 같이 더 자세한 정보가 저장되기를 원할 경우 사전에 관계가있는 다른 엔터티를 추가 할 수 있습니다. – srgtuszy

+0

약간의 실수가 있었기 때문에 대답을 업데이트했습니다. – srgtuszy

관련 문제