2010-12-15 2 views
2

CoreData를 사용하는 iPhone 앱을 만들 계획입니다. 나중에 앱의 새 버전으로 향상된 기능이 추가 될 수 있습니다. 내 질문은; CoreData를 사용할 때 사용자가 버전을 업그레이드 할 때 이전 데이터가 그대로 유지되도록하려면 무엇을 고려해야합니까? 우리가 들었던 것처럼 .sqlite 파일 이름도 동일하게 유지해야합니다. 핵심 데이터 앱을 출시 할 때 염두에 두어야 할 다른 요소는 무엇입니까?CoreData가 포함 된 iPhone 앱

감사합니다.

답변

2

데이터 마이그레이션 개념은 시간이 지남에 따라 유지해야 하는지를 이해하는 것이 중요합니다. 왜냐하면 결국 적어도 일부는 변경하려고하기 때문입니다.

이상형은 이전 데이터 모델에서 새 모델로의 마이너 변환이 자동으로 이루어지는 Lightweight Migration입니다. 문서에서 언급 한 바와 같이,이 변경 사항이있는 경우 자체 돌볼 수 : 새로운 속성의

  • 간단한 추가
  • 비 선택적 속성은 선택 사항
  • 옵션 속성 비되고되고 옵션, 엔티티 이름 바꾸기 기본값

을 정의하고 또는 속성도 간단하고 거의 자동입니다.

새로운 것 또는 제거 된 엔티티, 새롭거나 제거 된 또는 변경된 관계 등 모든 것이 털이 있습니다. 믿을 수 없을 정도로 어렵지는 않지만, 더 많은 작업이 필요하며 실패 할 여지가 더 많습니다.

이와 같이 잠재적 인 변경 가능성에 대한 약간의 추측은 사전에 작은 흔들림 방을 제공하는 것이 더 쉽고 효율적일 수 있습니다. 이론적이지만 현재 사용되지 않는 관계를 너무 많이 사용하는 경우 분명히 현재 시스템 속도를 늦추고 잠재적으로 아무 이유없이 발생할 수 있습니다.

상당의 가치가 있습니다.

+0

버전 1.0을 릴리스하고 v 1.1에서 내 CoreData (.xcdatamodel)에 추가/제거/이름 변경과 같은 사소한 업데이트를하면 다운로드 할 때 영향을받지 않습니다. v1.0의 저장된 데이터는 그대로 유지되어야합니다. 그 맞습니까? – hmthur

+0

몇 가지 간단한 규칙을 따르면됩니다. 기본적으로 변경을 수행 할 때마다 조정 된 새 모델을 추가하지만 이전 모델을 그대로 두는 것이 좋습니다. 결과적으로 사용자가 두 번째 변경 사항을 사용하여 새 릴리스 또는 그 이후의 버전을 다운로드하면 Core Data가 마이그레이션을 수행하여 필요에 따라 기존 데이터를 변환합니다. Lightweight Migration이 자동으로 처리 할 수있는 변경 사항 이외의 변경 사항은 잠재적으로 많은 버전의 코드를 수동으로 변경해야한다는 것을 의미합니다. 다시 말하지만, 유지할 수있는 많은 코드가 있습니다. –

1

두 가지 핵심 데이터 데이터베이스를 관리해야합니다. 먼저 앱 업데이트와 함께 제공되는 "읽기 전용"핵심 데이터 데이터베이스입니다 (앱과 함께 데이터를 보내고 싶다면이 부분을 신경 쓰지 않는다고 가정). 두 번째로, 전화기에 저장된 로컬 핵심 데이터 데이터베이스 (데이터 저장소)로 처음에는 데이터를 처음 채운 다음 사용자가 추가하거나 사용자가 제어하는 ​​서버의 업데이트로 추가합니다. 이 두 번째 핵심 데이터 저장소는 업데이트간에 지속될 수 있습니다.

나중에 수정하고 업데이트하려면 두 가지 옵션이 있습니다. 이전 데이터와 동시에 새 데이터를 가져올 필요가없는 한 새 코어 데이터 저장소에 추가 기능을 추가 할 수 있습니다. 다른 옵션은 사과의 핵심 데이터 이전 자료를 사용하는 것입니다. 자세한 내용은 here을 참조하십시오.

Here 또한 핵심 데이터를 준비하는 데 필요한 추가 리소스이므로 여기에 구체적인 핵심 데이터 예제가 많이 있습니다.

마지막으로 핵심 데이터 저장소를 크게 추가/수정하려는 경우 SQLite를 살펴 보시기 바랍니다.기존 코어 데이터 저장소를 새로운 스키마로 마이그레이션하는 것보다 (특히 내 스키마가 자주 변경되는 경우) 업데이트로 변경하는 것이 더 쉽습니다.