2012-02-13 2 views
1

코어 데이터를 사용하는 프로젝트가 있고 모델을 약간 변경해야 할 때마다 마이그레이션이 구현되었습니다. 그러나 지난 주에 필자는 모델을 완벽하게 점검하고 데이터를 마이그레이션 할 수없는 방식으로 대응해야했습니다.iOS에서 이전 코어 데이터 모델을 사용하지 마십시오

이 장치를 사용하여 모델의 버전을 확인하고 코드를 통해 삭제하고 완전히 새로 작성하는 방법이 있는지 궁금합니다. 이것은 가장 선호되는 방법이 아닐지 모르지만 누구보다 더 좋은 해결책이 있다면 나는 제안에 개방적이다.

답변

4

두 합리적인 옵션 :

  • 사용 NSManagedObjectModel의 일반적인 버전의 mechansim. 새 모델의 버전을 올리십시오. Core Data는 상점을 열기 전에 특정 상점이 앱의 모델 중 하나와 호환되는지 여부를 자동으로 확인합니다. 그렇지 않은 경우 추가하려고하면 오류가 발생합니다. 따라서 앱에 이전 모델을 제공하지 않으면 Core Data는 이전 상점을 사용하지 않습니다. 상점을 h 제하여 오류에 응답 할 수 있습니다. -isConfiguration:compatibleWithStoreMetadata:을 사용하여 상점을 추가하기 전에 점포를 확인할 수도 있습니다. 자세한 내용은 Initiating the Migration Process을 참조하십시오.

  • 새 모델을 사용하여 생성 한 상점에는 다른 이름을 사용하십시오. iOS 앱이 특정 이름의 상점을 1 ~ 2 개만 사용하는 경우는 드뭅니다. 이전 버전의 앱에서 상점에 사용한 이름을 알고있을 것입니다. 다른 이름으로 전환하면 상점에서 이전 모델 또는 새 모델과 호환되는지 여부를 쉽게 알 수 있습니다.

+0

첫 번째 옵션을 사용하면 어떻게 될까요? 장치에 특정 버전의 ID가 포함 된 핵심 데이터 sqlite 파일이 포함되어 있는지 확인합니까? – Seb

+0

불명확하게해서 죄송합니다 -이 답변의 첫 번째 버전을 매우 빨리 작성했습니다. 더 명확하게 설명하려고 대답을 변경했습니다. 희망이 도움이됩니다. – Caleb

+0

답변 해 주셔서 감사합니다. 이제는 내게 더 분명 해지고 더 의미가 있습니다. – Seb

0

이전 모델의 일부 속성이 새 모델에 존재하지 않도록 속성을 변경 한 경우 respondsToSelctor : 메서드를 사용하여 엔터티가 이전 선택기에 응답하는지 확인해보십시오. 만약 그렇다면, 당신은 옛 모델을 가지고 있습니다.

관련 문제