2010-05-04 4 views
2

CoreData에서 NSDictionary로 구현 된 변형 가능 속성 유형을 포함하는 엔티티를 만들었습니다. NSDictionary 특성에는 사용자 지정 클래스의 값만 들어 있습니다. 맞춤 클래스의 속성은 모두 NSString 유형입니다. 사용자 정의 클래스는 다음을 구현하는 NSCoding을 준수합니다.CoreData의 NSDictionary 속성 업데이트가 저장되지 않습니다.

- (void) encodeWithCoder : (NSCoder *) coder;

- (ID) initWithCoder : (NSCoder *) 코더

변 형식 (NSDictionary와) 타입을 포함한 모든 속성이 제대로 DB에 저장됩니다 처음으로 엔티티를 저장. 동일한 엔터티가 DB에서 가져오고 업데이트 할 수있는 경우 (Transformable 특성 포함) 제대로 업데이트 된 것으로 보입니다. 그러나 응용 프로그램을 닫은 후 Entity를 가져 오는 작업을 다시 열면 NSDate 및 NSString 유형의 나머지 속성이 최신 상태이지만 업데이트 된 Transformable 속성 유형은 표시되지 않습니다. 변환 가능 속성은 갱신 된 값이 아닌 원래 저장된 값입니다.

KVO에 문제가 있습니까? 아니면 CoreData에 사용자 지정 클래스로 채워진 NSDictionary를 저장하려고 할 때 다른 것이 누락 되었습니까?

답변

5

NSManagedObject에 값을 다시 설정 하시겠습니까? NSManagedObject은 변환 가능한 객체의 변경을 감시하지 않습니다. 저장하기 전에 적절한 설정기를 호출해야합니다.

3

동일한 문제가 발생하여 NSMutableDictionary 대신 변형 가능한 속성으로 NSDictionary로 전환되었습니다. mutableCopy로 NSDictionary를 가져 와서 작업하고 NSDictionary에 최종 결과를 넣은 다음 다시 managedObject에 삽입하십시오. 나에 대한 트릭과 나는 다른 해결책을 찾지 못했습니다.

관련 문제