2012-01-11 6 views
0

가능한 중복 : 모범 사례가 Coredata에서 데이터를 미리로드하는


Way to Prepopulate Core Data with Certain Data

내가 조언이 필요합니다 : 나는 비용 기록 (coredata 백엔드)를 수집하는 응용 프로그램을 개발을 시작 해요 . 다음과 같이 내가 기록하는 관계로 3 사전로드 된 개체 (유형, 항목 및 카테고리)와 함께 응용 프로그램을 배포해야합니다

"Record<< ->Type" "Record<< ->Item" "Record<< ->Category "

유형, 항목 및 카테고리 간의 레코드 관계를 존중하기 위해 레코드 엔티티에 가짜 오브젝트를 삽입하거나 추가하려고합니다. 관계는 선택 사항입니다.

장기적으로 이러한 목록을 관계로로드하는 가장 좋은 방법은 무엇입니까? 몇 가지 접근법을 읽었으므로 조금 혼란 스럽습니다.

a) 미리 채워진 데이터베이스

b) 파싱 XML/CSV

c) didFinishLaunchingWithOptions 또는 viewDidLoad

세 목록은 앱 수명 한번로드에서 새로운 객체를 삽입하는 단계; 그러나 앱은 3-6 개월마다 업데이트가 필요할 수 있습니다. Item에는 200 개의 레코드가 있고 Type에는 3 개의 레코드가 있고 Category 개의 30 개의 레코드가 있습니다. 모든 일반 텍스트.

XCode4.2 Bulid 4C199를 사용하고 있습니다. 귀하의 도움을 크게 주시면 감사하겠습니다.

답변

2

나는 일반적으로 최신 버전을 생성하는 코드와 함께 버전이있는 데이터베이스를 사용합니다. 레코드 및 열 등을 삽입하거나 업데이트하여 이전 버전의 최신 버전을 최신 버전으로 업데이트 할 수 있습니다.

if (noversiontable) { 
    create tables; 
    create defaults; 
    set version to 1; 
} else { 
    get version; 
} 
if (version == 1) { 
    updates to version 2; 
    set version to 2; 
} 
if (version == 2) { 
    updates to version 3; 
    set version to 3; 
} 
saveVersion; 

가끔은 그냥 추가 해요 열, 다른 시간 나는 그들을 삭제하거나 데이터 유형을 변경하고 처리 어떤 종류의 일을하고 있습니다. 예를 들어 주소 입력란을 사용하고 나중에 지오 코딩을 추가하기로 결정했을 수 있습니다. 버전 업데이트에는 기존 레코드 처리 및 지오 코드 실행이 포함됩니다.

0

미리 채워진 데이터베이스가 종종 가장 쉽지만 데이터를 가끔 업데이트해야한다고 말하면 가져 오기 메커니즘 (옵션 b)이 옵션 c 구현과 함께 가치가 있다고 생각하게됩니다 Matt H의 버전 권장 사항. 이 목적을 위해 JSON을 XML 또는 CSV보다 선호합니다. KVC를 사용하여 각 결과 사전을 코어 데이터 객체로 쉽게 복사 할 수 있습니다.

관련 문제