Archiver의 버전을 사용 중이며 문제가 발생했습니다. 내 프로젝트 클래스의 이전 버전에서 NSKeyedArchiver로 유지 된 객체를 이전하는 방법은 무엇입니까?
, 도전는 욕망이 새로운 2를 추가하여 도전 객체를 변경하는 응용 프로그램의 버전 1.1,//v1.0
@interface Challenge : NSObject<NSCoding>
{
...
@property (nonatomic,strong) NSString *challengeId;
@property (nonatomic,strong) NSString *title;
@property (nonatomic) BOOL isCompleted;
...
}
이제 디스크에 연재 @properties. 아카이브가 도전 개체를 해독하려고 시도 할 때 두 개의 새로운 속성이 존재하기 때문에
//v1.1
@interface Challenge : NSObject<NSCoding>
{
...
@property (nonatomic,strong) NSString *challengeId;
@property (nonatomic,strong) NSString *title;
@property (nonatomic) BOOL isCompleted;
...
@property (nonatomic) BOOL isActive;
@property (nonatomic) NSInteger completeCount;
}
내 문제는,이 (예 도전 버전 1.1은 도전을 위해 복사하거나 ALLOC 패턴과 일치하지 않는 V1 .0), 예외가 throw됩니다.
본질적으로 NSEncoding 개체를 마이그레이션하여 비슷한 시나리오를 경험 한 사람이 있었고이 기술을 극복하기 위해 어떤 기술을 사용 했습니까?
옵션은 내가 지금까지 오브젝트 트리에서 도전 위의 슈퍼 클래스를 삽입하려고 시도했습니다
을 고려했지만이 기능을 가져올 수 없습니다.
또한 이전 버전의 지속성 문제를 해독하고 새로운 유형의 객체를 유지하는 릴리스 v1.1의 두 단계 마이그레이션을 고려했습니다. NewChallenge v1.2 준비 - 복잡한 (나 단지 두 개의 속성을 추가하려는 고려).
나는 Challenge를 확장하고 속성이 서브 클래스에 존재한다고 생각했지만, 이것은 Challenge 개체를 볼 것으로 예상되는 많은 코드를 변경하는 것을 의미합니다.
어떤 통찰력이라도 대단히 감사하겠습니다.