2016-10-18 7 views
0

관계를 사용하여 여러 테이블의 코어 데이터 디자인을 사용했습니다. 내 데이터베이스는 SQLite입니다. 업데이트의 경우 JSON에서 데이터를 가져오고이 메서드를 사용합니다.고유 한 제약 조건과 관계가있는 코어 데이터 -UX

[NSEntityDescription insertNewObjectForEntityForName:entityName inManagedObjectContext:context]. 

코어 데이터에 고유 한 제약 조건이 추가되었습니다. 다른 개체의 관계 인 엔터티를 업데이트하면 연결이 끊어집니다.

예 : "pet_id"와 일대일 관계가있는 엔티티 "person". "애완 동물"을 업데이트하면 ID가 변경되고 "사람"은 이전 ID를 계속 가리키고 더 이상 관련이 없습니다. 이 문제를 방지 할 수있는 방법이 있습니까?

답변

1

나는 이것이 아직 어느 곳에서든지 문서화되어 있다고 생각하지 않는다. 다음과 같은 상황이 발생합니다.

  • 새 인스턴스를 만듭니다. 제약 조건은이 인스턴스가 기존 인스턴스와 일치 함을 의미합니다. 그러나 ...
  • 새 인스턴스에는이 관계에 대한 nil 값이 있습니다. 그래서 ...
  • 기존 인스턴스의 관계 값은이 새로운 nil 값으로 대체됩니다.

관계를 유지하려면 새 인스턴스에 이미 해당 관계에 대한 올바른 값이 있어야합니다. 근본적으로 제약 조건 매칭 시스템은 새로운 인스턴스에서 관계 값이 다르다는 사실을 무시하고 다른 속성에 대해 새로운 값을 허용하도록 요청합니다.

은 완전히이라고 생각하지만 현재 구현에서는 지원되지 않습니다. 이에 대해 Apple에 버그를 제기하고 데이터를 독점적으로 유지하는 비 제약 기반 방식을 조사하는 것이 좋습니다.

+0

답변 해 주셔서 감사합니다. 나는 버그를 제기하려고 노력할 것이지만 그것이 쓸모 없을 것이라고 생각합니다. –