2011-09-01 1 views
0

웹 서버 (MySQL)에서 데이터를 가져 와서 핵심 데이터를 사용하여 SQLite 데이터베이스에 구문 분석하고 저장하는 응용 프로그램을 만들고 있습니다.핵심 데이터 관계를 동기화하는 방법은 무엇입니까?

MySQL 데이터베이스에는 '단어'테이블이 있습니다. 각 단어는 '카테고리'에 포함될 수 있습니다. 따라서 단어 테이블에는 'category_id'필드가있어 테이블을 조인 할 수 있습니다.

내 응용 프로그램에서 로컬로 복제하는 방법에 대해 머리를 쓰는 데 문제가 있습니다. 현재 MySQL 데이터베이스의 구조와 일치하는 엔티티가 있지만 관계는 없습니다. 내 '단어'엔티티에서 'category_id'필드가 필요하지 않아야합니다 (대신 일대일 '카테고리'관계 설정이 있어야 함).

이 핵심 데이터 관계를 웹 서버와 동기화 된 상태로 유지하는 방법에 대해 혼란 스럽습니까?

답변

1

WordCategoryEntity이 있다고 가정하면 관계가 필요합니다 (이름이 약간 흐릿 할 수 있음). 또한 Category 많은 단어를 가질 수 있습니다 가정

// Word Entity 
Relationship Destination Inverse 
category  Categories  words 

// Category Entity 
Relationship Destination Inverse 
words   Word   category  // To-Many relationship 

당신은 모든 관계가 코어 데이터는 유지하는 객체 그래프를 통해 관리됩니다대로 CATEGORY_ID 필드를 필요로하지 않을 정확합니다. 각 엔티티에 여전히 server_id (또는 이와 유사한)과 같은 기본 키가 필요합니다. 그렇지 않으면 이미 저장된 개체를 업데이트/찾는 데 문제가 있습니다. 내가 외부 데이터베이스 (내가 JSON과 함께 편안하고 인터페이스를 사용하지만 그건 정말 중요하지 않습니다)에서 동기화 데이터를 처리하는 방법을

이입니다

  1. 잡아 SERVER_ID
  2. 으로 정렬 된 피드 (기본 키를 가져옵니다 server_id)
  3. ... @"(serverId IN %@)", primaryKeys 과 같은 술어를 기본 키순으로 정렬하여 가져 오기를 수행하십시오.
  4. 각 배열을 단계적으로 수행하십시오. 가져온 결과에 내 레코드가 있으면 업데이트합니다. 그렇지 않으면 새로운 것을 삽입합니다.
  5. 당신은 다음의 관계
  6. 를 사용하여 객체를 추가하기위한 핵심 데이터에 의해 생성 된 적절한 방법의 일부를 구성하는 모든 개체를 가져 모두 WordCategory
  7. 이 작업을 수행해야합니다. 예 : '[myArticle addWords : [NSSet setWithObjects : word1, word2, word3, nil];

시험하기가 어렵지만 시작점이되어야합니다. 스택 오버플로를 사용하는 동료 반짝이는 참석자를 만나서 반갑습니다. 단지 나만이 아니예요.

+0

응답 해 주셔서 감사합니다. '핵심 데이터에서 생성 된 적절한 방법'을 정확히 말하면 무엇을 의미합니까? XCode를 사용하여 자동으로 모델을 생성 했습니까? – Rich

+0

일반적으로 WYSIWYG을 사용하여'model'을 편집 한 다음'File-> New-> New File-> CoreData-> NSManagedObjectSubclass'를 수행하고 각 Entity에 대해 NSManagedObject의 하위 클래스를 만듭니다. 생성 된 클래스의'.h' 파일을보고 관계에 대해 생성 된 메소드를 볼 수 있습니다 –