2013-07-27 4 views
2

CLPlacemark 객체를 저장하려고하는 위치 표시 데이터 속성이있는 코어 데이터 엔티티가 있습니다.NSKeyedUnarchiver가 CoreData 데이터 속성에서 CLPlacemark 객체를 디코딩하지 않습니다.

@interface ZJPlace : NSManagedObject 
...  
@property (nonatomic, retain) NSData * placemark; 

나는이 같은 객체 인코딩하고있어이 같은

place.placemark = [NSKeyedArchiver archivedDataWithRootObject:self.placemark]; 

및 디코딩 : 디코딩에

self.placemark = [NSKeyedUnarchiver unarchiveObjectWithData:place.placemark]; 

를, 나는 오류를받지 못했습니다 또는 백업 전무 - 그것은 빈 CLPlacemark 객체처럼 보입니다 (self.placemark의 클래스는 CLPlaceMark이지만 description은 로그에 아무 것도 인쇄하지 않습니다)

place.placemark 핵심 데이터 속성에 저장된 데이터가 표시되지만 올바른 객체로 다시 디코딩되지는 않습니다. 이것은 기본적으로이 질문에서와 같은 문제입니다 : 답변이없는 Trouble decoding with NSKeyedUnarchiver.

NSKeyedArchiver와 CoreData를 함께 사용하는 방법에 대한 기본적인 내용이 있습니까? 사전에 어떤 힌트를 주셔서 감사합니다 ...

답변

1

물론 거기에 이었습니다. 핵심 데이터가 복잡한 객체를 어떻게 저장하는지 완전히 잊었습니다. 희망이 내가 누군지 우둔 같은 다른 초보자를 밖으로 도움이됩니다. 한숨.

문서 : Transformable attributes

그래서 여기에 핵심 데이터의 CLPlacemark 인코딩에 대한 위 내 질문에 정말 간단한 해결책 :에서 Transformable

  • 을 할 수 코어 데이터 모델의 속성

    1. 변경 유형은 NSManagedObject 하위 클래스의 헤더, 내 사례에서 NSManagedObject's 속성의 유형을 NSData에서 인코딩하려는 클래스로 변경해야합니다. CLPlacemark

    그런 다음 일반 개체처럼 속성을 사용하십시오 (예 :

    self.placemark = place.placemark 
    

    NSKeyedArchiver이 필요하지 않습니다.