이 두 호출 간의 문서화 된 차이점을 알고 있습니다. 그렇지만 누구나 내가 알아 차린 다음과 같은 관찰 된 동작의 이유를 알고 있습니까?설명되지 않은 objectWithID : existingObjectWithID 간의 동작 차이 :
[childContext objectWithID : objectID]를 사용하는 경우 childContext를 사용하여 편집, 삽입 및 삭제 한 parentContext 및 임시 childContext가있는 경우; 부모 컨텍스트에있는 알려진 기존 관리 객체를 검색 할 때 가끔 해고 될 때 오류가 발생하고 예외가 발생하는 오류가있는 객체를 제공합니다. 나는 objectWithID를 이해합니다 : 주어진 objectID에 대한 실제 managedObject가 있는지 여부에 관계없이, 의도적으로 오류 상태의 객체를 반환합니다. 그러나 객체가 부모 컨텍스트에 실제로 존재하는 경우, 속성 중 하나에 액세스 할 때 아무 문제없이 객체가 항상 부모 컨텍스트에서 성공적으로 검색됩니다 (예 : 오류 발생). [childContext existingObjectWithID : objectID]를 사용하는 경우; 나는 그것이 실제로 항상 성공한다는 것을 안다.
레코드의 경우 하위 컨텍스트에서 캐싱을 해제했으며 [childContext resetContext]를 호출 한 후 이와 동일한 문제가 발생합니다. 따라서 부모 컨텍스트와 일치하지 않는 오래된 캐싱 된 데이터의 인공물이 아닙니다.
설명서만으로는이 동작을 설명하기에는 부족한 것처럼 보입니다. 나는 물론 그것을 경험하고 단지 "항상 existingObjectWithID를 사용한다는 것을 알았습니다 : 객체 ID를 자식 편집 컨텍스트 블록으로 전달할 때 블록을 수행한다는 것을 알았습니다."라고 말하지만 불안해하고 정확히 무슨 일이 일어나고 있는지 이해하고 싶습니다. 적어도 하나는 다른 것보다 성능에 미치는 영향이 있는지 이해할 수있을뿐만 아니라 제약 조건이 무엇인지 이해할 수 있으므로 불필요하게 코드에서 구현 한 다음 그것을 고치기위한 잘못되었거나 비효율적 인 호출).
감사합니다. Allan. 나는 지금 그것을 단지 무시하고 있으며, 다른 누군가도 (성공적으로) 그것을 무시하고 있음을 아는 것은 도움이된다. 나는 지금 내 코딩과 함께 매우 편안한 장소에 있으며, "알지 못함"또는 "이해하지 못함"문제는 내가 처음 시작했을 때와 같은 것을 너무 많이 상기시킨다. 내 코드가 괜찮 으면 항상 걱정한다. 또는 나에게 물을 줘도. 그러나 길의 아래에서 그 이상! – TheBasicMind
설명과 해결책을 가져 주셔서 감사합니다. 나는 UIManagedDocument를 사용하여이 문제도 다루었 다. existingObjectWithID로 전환 한 후 내 첫 번째 테스트 : 오류 : 유망했다. –