2011-04-20 3 views
1

코어 데이터를 사용하고 있지 않습니다. 단순하게 유지하기 위해 이전에 NSString 형식이었던 데이터가 있다고 가정 해 봅시다. 이제는 ivar 형식이 NSString 형식의 "이름"ivar 인 사용자 지정 클래스 Person의 개체라고 가정 해 봅시다. 앱의 업데이트 된 버전에서는 Person 객체가 "name"을 NSString이 저장된 데이터에 무엇이든 설정하도록하고 싶습니다. 그러나 내 사람들이 앱의 다른 장소에 많이 등장한다고 가정하면 각 앱을 개별적으로 처리하는 방법에 통증이 있습니다.iOS - 새 앱 버전의 데이터 구조를 업데이트 중입니다.

이 문제를 해결하는 가장 좋은 방법은 무엇입니까? 특히, 보관 처리 과정에서 그것을 잡으려고 할 수있는 트릭이 있습니까? 아니면 모든 보관 처리되지 않은 객체를 살펴보고 적절한 NSString을 Person 객체로 변환해야합니까?

답변

0

unarchiver에서 가져온 값을 확인하고이 방법으로 실행하는 유틸리티 클래스를 만들 수 있습니다. 값이 NSString이면 새 Person 객체를 생성 할 수 있습니다. 그렇지 않으면 그 객체를 다시 반환합니다.

+ (Person *)personFromStringOrPersonObject:(id)object { 
    if ([object isKindOfClass:[NSString class]]) { 
     // Construct your Person object 
     Person person = [Person new]; 
     person.name = object; 
     return person; 
    } else { 
     return object; 
    } 
} 
+0

그래, 그렇지만 나는 어디에서나 사람을 보관하고있다. 피하기 어려운? –

+0

그래, 나는 피할 수 없다고 생각하지만 적어도 도우미 방법으로하는 것이 더 쉽다. 또한 "버전"필드를 데이터 파일에 추가하여 데이터의 마이그레이션 경로를 쉽게 작성할 수 있습니다. – Frank

+0

더 좋은 방법이없는 것으로 받아 들여졌습니다. –

관련 문제