2010-06-03 3 views
2

CoreData와 함께 사용하려는 다소 고급 데이터 모델에 관한 질문이 있습니다.CoreData가있는 Xcode의 고급 DataModel

내가 지금까지 한 일에 대해 자세히 설명하기 전에 내가하고 싶은 것을 설명 할 것입니다.

나는 한 방에 있고 환경 설정을 가진 호텔 손님 목록을 가지고 있습니다. 준비가되면 사용자는 손님을 선택하고 데이터를보고 새 손님을 추가하고, 방을 선택하고 (응용 프로그램에서도 유지 관리) 사용자 기본 설정을 선택해야합니다 (사용자가 새 기본 설정을 추가 할 수 있어야 함). 손님은 선호도가 없거나 많을 수 있습니다.

여기 내가 지금까지 가지고있는 것이 있습니다. 나는

이제 ("일대 다 관계"와 대상 환경 설정)이 관계 룸 (대상 객실)과의 환경 설정으로> - 이름으로 GuestInfo - 이름 와 환경 설정 - 객실 roomnumber 와 - : 내가 3 엔티티를 생성 이 모든 작업을 수행하고 Managed Object Classes를 만들었습니다. 여태까지는 그런대로 잘됐다. 문제는 내가 몇 가지 경고를 받는다는 것이다.

  1. GuestInfo.room - 관계가 역
  2. GuestInfo.prefs이 없습니다 - 관계가 역이없는 일대를 :이 고급 설정은 (어떤 객체는 여러 지역에서 수 없다 특정 관계)

이 경고는 무시할 수 있습니까? 나는 방을 의미한다. 항상 각 방의 방 번호는 하나이지만, 한 방에 더 많은 손님이있을 수 있으므로 역 관계를 설정할 수 없다. 또한 환경 설정의 경우 각 게스트에 대한 환경 설정이 없거나 더 많을 수 있습니다.

+0

모델의 스크린 샷을 볼 수 있으십니까? 다이어그램을 보면이 사실을 쉽게 알 수 있습니다. –

답변

4

Objective-C 경고에서 NEVER을 무시해야합니다. 핵심 데이터를 다룰 때 이것은 두 가지 사실입니다. 런타임시 모든 경고를 오류로 처리하십시오.

반비례 관계에 대해서는 반전을 항상 가져야합니다. 그렇지 않으면 성능이 저하되고 데이터 무결성이 위험합니다.

1

이러한 경고는 무시할 수 있지만 (question 참조) 역관계를 추가하여 핵심 데이터를 행복하게 만드는 것은 쉽습니다. GuestInfo에 Room에 관계를 추가하고 GuestInfo에 Preferences에 관계를 추가하고 반전을 선택하십시오. 나는 당신이 한 방에 한 명의 손님 정보 만 가질 것이기 때문에 이것들이 일대일이라고 생각합니다. 이것은 게스트 정보에 방을 설정하면 그 방의 다른 게스트 정보가 제거된다는 부작용이있을 수 있습니다. 그것이 바람직하지 않으면 관계를 다 대일 관계로 만들 수 있습니다.

+0

이것은 끔찍한 조언입니다. 경고, 특히 역관계 경고는 절대로 무시해서는 안됩니다. –

+0

나는 그들을 무시하도록 조언하려고 의도하지 않았다. (그것은 끔찍한 충고 일 것이다). 그래도 내 답변을 다시 읽는다면, 내가 말한 것처럼 그것이 실제로 어떻게 들리는 지 알 수 있습니다. "깡통"은 "돈이 필요할 경우 은행을 털릴 수는 있지만 ..."과 같은 의도로 작성되었습니다. –