2013-05-14 5 views
1

iOS 앱에서 정보 및 데이터를 저장하기 위해 NSKeyedArchiver/NSKeyedUnarchiver를 통해 복잡한 개체의 직렬화를 사용하고 있습니다. 다른 iOS 버전에서 NSKeyedArchiver/NSKeyedUnarchiver 호환성

그래서 앱이 애플 리케이션 번들에서 이러한 직렬화 된 객체를 포함하고,이 파일이 하나의 특정 iOS 버전에서 생성됩니다 응용 프로그램이 다른 아이폰 OS 버전에서 실행 될 수있는 바와 같이 (

(의 아이폰 OS 5.0을 가정 해 봅시다) > 5.0) 그리고 앞으로 출시 될 버전에서도 앱 번들에 포함 된 원래의 직렬화 된 객체가 다른 모든 iOS (6.1, 7.0, ...)에서 완벽하게 읽을 수 있도록하고 싶습니다.

직렬화 할 복합 객체는 이러한 모든 iOS 버전의 SDK에 클래스가 포함 된 객체로 구성됩니다 (단순하게하기 위해 향후이 클래스에서 더 이상 지원되지 않을 것이라고 가정하지 않음). 우리는 항상 모든 iOS와 호환 될 수 있다고 확신 할 수 있습니까?

답변

2

일반적으로 그렇습니다.

모든 사용자 지정 개체를 사용해야하며 절대 보관/보관 취소 프로세스를 완전히 제어해야합니다. 그러나 모든 클래스가 키 처리 된 아카이버의 인코딩 및 디코딩 메소드를 적절하게 사용하는 한 모든 것이 향후 호환 될 것입니다.

애플이 어떤 이유로이 문제를 해결하기로 결정했다면, 가장 좋은 방법은 결과 예외를 잡아서 앱 업그레이드를해야한다는 것입니다.

대체 접근법은 데이터를 JSON과 같이 다른 형식 (압축 가능)으로 저장 한 다음 앱을 시작할 때 기존 버전이있는 경우이를 사용하고 그렇지 않은 경우 초기 배포 데이터를 읽는 것입니다.

+0

많은 감사의 말씀, 귀하의 예외 사항을 따라갈 것이므로보다 안전합니다. – Gianluca

관련 문제