적어도 코어 데이터에서 관계에 대한 삭제 규칙이 문서에 설명 된 간단한 경우를 넘어서서 어떻게 작용하는지 조금 헷갈 린다.코어 데이터 삭제 룰 - 대다 관계 삭제, 비어있는 경우 삭제
대부분의 경우 여기에서 질문에 대한 답은 대부분 일대 다 관계의 왼쪽에있는 객체가 오른쪽에있는 객체를 "소유"하는 모델을 사용합니다. a Person
은 PhoneNumber
입니다. 사용자를 삭제하면 연관된 모든 숫자가 삭제됩니다. 케이스의 종류에서,이 솔루션은 분명하다
Person --(cascade)-->> PhoneNumber
PhoneNumber --(nullify)--> Person
무엇 내가 관심이있는 것은 반대입니다 : 당신이 그렇게 같은 관계를 설정하는 경우 코어 데이터가 당신을 위해 모든 것을 처리 할 것을 다 관계 곳 "소유권"이 취소되었습니다. 예를 들어 CoreDataBooks 샘플 코드를 확장하여 한 곳에서 고유 한 작성자에 대한 모든 정보를 수집하는 Author
엔티티를 추가 할 수 있습니다. A Book
에는 한 명의 저자가 있지만 저자에게는 많은 책이 있지만 ... 우리는 책을 열거하지 않은 저자를 좋아하지 않습니다. 따라서 books
관계가 비어 있지 않은 Author
삭제는 허용되지 않아야하며 특정 Author
을 참조하는 마지막 Book
을 삭제하면 Author
이 삭제되어야합니다.
은 다음과 같습니다
- 코어 데이터와 같이 자동적으로 적어도이 중 일부를 할 수있는 방법을 가지고 관계 삭제 규칙?
- 이 상황을 처리하는 데 "정식"으로 선호되는 방법이 있습니까?
다른 일이 발생하지 않는 한, 저자의 책을 모두 한꺼번에 삭제하는 경우 실패합니다. 나는 해당 prepareForDeletion에 author.books.count의 값을 인쇄하고 있는데 두 책 모두에 대해 2입니다. 그러면 저자는 결코 삭제되지 않습니다. –