iphone - 서버 - 파이어 베이스 웹 데이터베이스




Xcode 일관성 오류:조치 없음 삭제 규칙 설정은 고급 설정입니다. (2)

Xcode에서 데이터 모델을 만든 후에는 각 객체 관계에 대해 다음과 같은 오류가 발생합니다.

Consistency Error:
Setting the No Action Delete Rule on [object relationship] is an advanced setting

Xcode는 무엇을 말하며 응답해야합니까?


거부 관계 대상에 하나 이상의 오브젝트가 있으면 소스 오브젝트를 h 제할 수 없습니다. 예를 들어 부서를 제거하려는 경우 해당 부서의 모든 직원이 다른 곳으로 처음 이전 (또는 해고)해야합니다. 그렇지 않으면 부서를 삭제할 수 없습니다.

Nullify 대상에있는 오브젝트의 역 관계를 널 (null) 설정하십시오. 예를 들어 부서를 삭제하는 경우 모든 현재 구성원의 부서를 null로 설정하십시오. 직원의 부서 관계가 선택 사항이거나 다음 저장 작업 전에 각 직원에 대해 새 부서를 설정했는지 확인하는 경우에만 의미가 있습니다.

계단식 관계의 대상에있는 개체를 삭제합니다. 예를 들어, 부서를 삭제하는 경우 해당 부서의 모든 직원을 동시에 해고하십시오.

조치 없음 대상의 대상에 대해 아무 것도 수행하지 않습니다. 예를 들어 부서를 삭제하는 경우 해당 부서에 속한다고 여전히 믿는 경우에도 모든 직원을 그대로 남겨 둡니다.


핵심 데이터는 역 관계를 사용하고 규칙을 삭제하여 객체 그래프의 일관성을 유지합니다.

A.foo <1-1> B.bar가 있고 a.foo = b 한다고 가정 해 봅시다. 이것은 자동으로 (효과적으로) b.bar = a 수행 b.bar = a .

이제 [b delete] 라고 가정 해 보겠습니다. "무효화"규칙을 사용하면 효과적으로 b.bar.foo = nil 합니다. "캐스케이드"의 경우 [b.bar delete] 합니다. "아무런 조치가 없다"는 것은 아무 것도하지 않습니다. a.foo 는 이제 "dangling Core Data 객체 참조"입니다.

그것은 정말로 매달려있는 포인터가 아닙니다. 표준 메모리 관리 규칙은 b 가 메모리에 계속 존재 함을 의미하지만 ( b 가 오류로 변할 때까지) a.foo 는 삭제 된 객체를 영원히 참조 할 a.foo 속성에 액세스하려고 할 때 예외가 발생합니다. 어느 쪽이든 저장하고 다시 가져올 때 어떤 일이 발생하는지 잘 모르겠습니다.

다 대다 관계로 인해 더 복잡해집니다. 구현 세부 정보 : 관계가 엔티티 중 하나 에 "소유"된 것으로 보이며 해당 엔티티가 저장 될 때 저장됩니다 (다른 MOC간에 관계를 설정하려고 할 때이 버그가 발생합니다. 저장하지 않은 MOC는 소유하지 않았습니다. 업데이트 된 엔티티이므로 관계가 저장되지 않았습니다). 분명히 ab 둘 다 삭제할 때 관계가 제거되어야하므로 관계 중 하나만 사라지면 하나만 제거된다고 가정합니다 (그러나 어느 것을 알지 못합니다!).

아마도 Nullify 또는 Cascade를 원할 것입니다. 계단식이 어느 방향으로 발생하는지 결코 기억할 수 없기 때문에 캐스케이드를 사용하지 않습니다.





data-modeling