2014-05-14 1 views
1

내 응용 프로그램이 다른 할 일 관리자입니다. 그것은 로컬 (개인 목록) 또는 공유 목록이 될 수있는 클래스 Todolist를가집니다. 비공개 목록과 관련된 모든 데이터는 로컬에 저장됩니다 (Core Data + SQLite 저장소). 공유 목록과 관련된 데이터는 로컬 및 원격으로 저장해야합니다 (모든 공유 목록 구성원이 목록에 트랜잭션을 추가 할 수 있도록). 원격 영구 저장소는 PFIncrementalStore을 통해 Parse Cloud로 백업됩니다. 따라서 필자의 목표는 로컬에 저장된 공유 목록을 원격 저장 대상과 동기화하는 것입니다.한 클래스의 다른 객체에 대한 두 개의 영구 저장소

코디네이터가 하나 개의 관리 객체 모델과 연관 될 수 있습니다 : 여기

는 코어 데이터 프로그래밍 가이드에서 인용 한 것입니다. 당신이 다른 상점에 다른 개체를 넣을 경우 관리 객체 모델 내에서 구성을 정의하여 모델 엔티티를 분할해야

그것이 내가 공유 목록에 대한 데이터 모델의 별도의 구성을 작성해야 함을 의미합니까 할 일이야? 또는 단순히 개체를 NSManagedObjectContext-(void)assignObject:(id)object toPersistentStore:(NSPersistentStore *)store의 메서드로 다시 할당하면 충분합니까?

솔루션을 보는 방법 : 공유 목록을 처리 할 때 PFIncrementalStore에 할당하고 다른 한편으로는 (개인 목록 처리) 나는 이것을 standart 로컬 저장소 (NSSQLiteStoreType)에 할당합니다.

나는 제대로하고 있습니까? 모든 제안을 부탁드립니다. 고맙습니다.

답변

2

로컬 및 원격 할 일 유형이 서로 다른 엔티티 유형이거나 영구 저장소 파일 중 하나에만 존재해야하는 다른 엔티티가 없으면 구성이 유용하지 않습니다. 해당 인용문이 "다른 엔티티"인 경우은 동일한 엔티티 유형의 다른 인스턴스가 아니라 다른 엔티티 유형을 의미합니다.

assignObject:toPersistentStore:을 사용하면 하나의 영구 저장소에서 다른 저장소로 개체를 이동할 수 없습니다. 해당 메서드에 대한 문서를 보면 "새로 삽입 된 개체"에만 적용된다는 것을 알 수 있습니다. 즉, 관리 대상 객체 컨텍스트와 연결되지 않은 새로운 관리 대상 객체 (즉, 컨텍스트를 만들 때 컨텍스트에 nil 값을 전달한 객체)를 새로 만들면 NSManagedObjectContext에 특정 객체를 삽입하고 특정 객체를 사용하도록 지시 할 수 있습니다. 저장 파일. 중요하게는 은 이미 컨텍스트와 저장소에 속한 개체에서이 메서드를 사용할 수 없으므로 개체를 한 저장소에서 다른 저장소로 이동할 수 없습니다.

당신이 설명하는대로, 당신은 같은 것을 수행해야 객체를 이동하려면

  1. 가 대상 저장소
  2. 복사에 새 인스턴스를 만들 새
  3. 에 기존 개체에서 모든 속성
  4. 이전 것을 삭제하고 새 것을 저장하십시오.

한 저장소에서 다른 저장소로 개체를 이동할 수있는 기능이 내장되어 있습니다.

관련 문제