2012-02-20 1 views
2

핵심 데이터를 사용하여 객체의 데이터베이스를 만들었습니다. 내 애플 리케이션이 여러 사용자를 지원하는 기능을 갖기를 원한다. 각 사용자는 데이터베이스에 저장된 개체 목록을 볼 수 있어야하며 앱에서 자신의 계정 내에서 사용하려는 개체를 선택할 수 있습니다.상점 간 핵심 데이터 공유 객체

이것을 구현하는 가장 좋은 방법은 무엇입니까? 각 사용자마다 별도의 영구 저장소를 만들고 싶습니다. 사용자가 선택한 객체의 기본 기본 목록과 같은 공유 객체는 각 사용자의 영구 저장소에있는 객체가 가리키는 '공통'영구 저장소의 일부 여야하므로 무리를 만들지는 않습니다 객체 복제.

주 목록의 각 개체에는 하위 관리 개체가 있습니다. 자식은 각 사용자가 수정할 수 있으므로 각 사용자의 영구 저장소에 고유해야합니다.

모범 사례에 대한 제안 사항이 있으십니까? 나는 Core Data를 처음 보았습니다.

참고 : 한 번에 한 명의 사용자 만 로그인 할 수 있습니다.

감사합니다.

+1

는 맥 또는 iOS 때문에? 태그를 달아주세요. – vikingosegundo

답변

3

동일한 영구 저장소 조정자에 여러 저장소를 추가 할 수 있으며 모두 정상적으로 작동해야합니다. 알아야 할 사항은 다음과 같습니다

  1. 같은 개체 (개체 즉, 유형)를 포함 한 개 이상의 상점이있는 경우에 사용할 저장 컨텍스트를 알려 NSManagedObjectContext의 -assignObject:toPersistentStore: 방법을 사용해야합니다 추가하는 각각의 새 오브젝트.

  2. 특정 개체는 하나의 영구 저장소에만 존재할 수 있습니다. 예를 들어 Tom, Dick 및 Harriet과 같은 여러 개의 Person 객체가있는 경우이 세 가지 객체는 모두 단일 저장소에 존재하거나 여러 저장소로 나눌 수 있지만 Tom과 같은 특정 객체는 단일 저장소에만 존재할 수 있습니다.

  3. 코어 데이터를 사용하면 다른 상점의 개체간에 관계를 만들 수 없습니다. Tom과 Dick이 형제이고 모델에 관계를 기록하려면 동일한 상점에 ​​할당해야합니다. 관계 대신 가져온 속성을 사용할 수도 있지만 관계만큼 간단하지는 않습니다.

따라서 개별 상점 경로를 사용하는 경우 공통 저장소에 사용자가 선택할 수있는 '프로토 타입'개체 세트가 포함될 수 있습니다. 사용자가 객체를 선택하면 해당 객체를 사용자의 자체 저장소로 복사하고 해당 지점의 새 객체로 작업합니다. 그렇게하면 관계를 사용하여 각 객체의 자식을 추적 할 수 있으며 자식에 대한 변경 사항은 각 사용자마다 고유하게 유지됩니다. 다른 방법으로는 공용 저장소에 주 개체를 보관하고 가져온 관계를 사용하여 사용자 저장소의 하위 개체에 연결하는 방법이 있지만 더 복잡해 보입니다.

+0

당신이 대답을 이해함에 따라 여러 상점이 엔티티 클래스를 공유 할 수 있다고 말하고 있지만 여러 상점은 해당 엔티티 클래스의 인스턴스 *를 공유 할 수 없으며 관리 대상 객체를 공유 할 수 없습니다. 나는 그가 각 사용자에 대해 별도의 상점을 사용하는 길을 간다면 그는 "각기 다른 객체를 만들어서"각 사용자에게 "기본 객체 목록"을 제공하도록 강요받을 것이라고 생각한다. 그는 Rog의 사용자 엔티티 구성표를 사용하는 것이 좋습니다. – Wienke

+0

@Wienke 의견을 보내 주셔서 감사합니다. 개별적인 개체를 공유하고 싶다는 점을 놓쳤습니다. 더 나은 대응을 위해 답을 수정했습니다. OP는 여러 상점에서 판매되는 것으로 보이며 그 혜택을 볼 수 있습니다. 예를 들어 데이터가 상점별로 분리되어있는 경우 개별 사용자 계정을 기기와 동기화 된 상태로 유지하는 것이 더 쉽습니다. 또한 많은 사용자가있을 수 있으며 모든 사용자가 모든 장치를 사용할 수 있어야한다는 요구 사항이있을 수 있으며 별도의 사용자 데이터를 별도로 유지하면 도움이 될 것입니다. 그러나 당신은 좋은 지적을하고, 나는 그것들을 다루었 으면 좋겠다. 건배. – Caleb

4

왜 별도의 상점이 필요합니까? Coredata를 처음 사용하는 사람이라면 그 길을 따라 가면 상황이 매우 빨리 복잡해질 것이라고 생각합니다.별도의 저장 갈 진짜 이유가없는

그래서, 여기에 내가 할 줄 무엇 : 당신의 UserObject 기관 및 관련 속성 만들기

  1. 만들기 대다 UserObject 기관 (및 역)
  2. 사용자가 (즉, 새로운 User 인스턴스를 생성)
  3. 자신의 개인 프로필을 만들어 보자 관계
  4. Object 인스턴스를 모두 가져옵니다.
  5. 사용자가 관심있는 주제를 선택했으면 관계를 통해 인스턴스를 User 인스턴스와 연결하십시오. 또는 User에 고유 한 해당 객체의 새 인스턴스를 만들 수 있습니다 (사용자가 사용자 정의한 "하위"객체를 가질 필요가 있음을 언급 한 것처럼 내 기본 설정이됩니다).
  6. 완료되면 컨텍스트를 저장하십시오.
  7. 여기에서 user.objects 관계에 액세스하여 해당 특정 사용자에게 관심이있는 모든 개체를 가져올 수 있습니다. 또한 역도 관계 object.users을 통해 특정 Object과 연결된 모든 User 인스턴스를 가져올 수 있습니다.