이것은 Objective-J/Cappuccino에 대한 질문이지만 프레임 워크가 매우 유사하므로 코코아 태그를 추가했습니다.CoreData없이 역 관계 관리
카푸치노의 단점 중 하나는 CoreData가 아직 포팅되지 않았기 때문에 모든 모델 객체를 수동으로 만들어야한다는 것입니다.
CoreData에서 역 관계가 자동으로 관리됩니다 ... 다른 개체의 다기구 관계에 개체를 추가하면 두 방향으로 그래프를 탐색 할 수 있습니다.
CoreData가 없으면 이러한 반비례 관계를 자동으로 설정할 수있는 명확한 방법이 있습니까?
보다 구체적인 예로, 일반적인 Department 및 Employees 예제를 살펴 보겠습니다. 레일 용어를 사용하기 위해 Department 객체에는 많은 Employees가 있고 Employee는 Department에 속합니다.
그래서 우리 부서 모델에는 NSMutableSet (또는 CPMutableSet) "employees"세트가 있고 Employee 모델에는 해당 부서 모델을 다시 가리키는 변수 "department"가 있습니다.
새로운 Employee 모델을 세트에 추가 할 때 반비례 관계 (employee.department)가 자동으로 설정되도록하는 쉬운 방법이 있습니까? 또는 그 반대의 경우 : 직원의 부서 모델을 설정하면 해당 부서의 직원 세트에 자동으로 추가됩니다.
오른쪽 저는 모든 모델 하위 클래스 인 "ValidatedModel"객체를 만들고 있습니다. KVO를 사용하여 역 관계를 설정하는 몇 가지 메서드를 추가합니다. 그러나 나는 무의미한 일을 많이하고 있으며, 이미이 일을하는 더 쉬운 방법이 있음을 두려워합니다.
누군가 내 걱정거리를 풀 수 있습니까?
고마워요, 기본적으로 제가하고있는 일입니다. (KVO를 사용하여 양쪽이 바뀌면 트리거하고 다른 하나를 추가하는 것을 제외하고) 그래서 나는 올바른 길을 가고있는 것 같습니다. –
그게 당신이하는 일이라면, 당신은 올바른 길을 가고 있습니다. 나는 내 접근 방식이 KVO를 수행하는 오버 헤드 때문에 조금 더 쉬울 것이라고 생각하지만 어느 쪽이든 제대로 작동해야합니다. – Alex
KVO를 사용하는 주된 이유는 생성 된 접근자를 수정하지 않기 위해서입니다. 대신 내 init 메서드에서 관계 유형, 사용할 속성 및 역 관계 속성을 설명하는 메서드를 호출합니다. 이렇게하면 옵저버 등이 자동으로 설정됩니다. 모든 코드가 작동 한 후에 코드를 공유합니다. –