2013-07-05 8 views
1

NSFetchedResultsController를 내 기본 관리 객체 컨텍스트에 연결했습니다. 그것은 내 메인보기에서 테이블보기에 대한 데이터를 유지 담당합니다.iOS5 NSFetchedResultsController 삭제 업데이트를 가져 오지 못함

가져온 결과 컨트롤러가 추적하는 관리 대상 객체를 새로 고치거나 삭제하는 백그라운드 스레드에서 NSOperation을 실행하고 있습니다. nsoperation에 자식 컨텍스트 (개인 동시성 유형/부모 = 기본 관리 개체 컨텍스트)를 만들고 개체를 삽입/삭제합니다. 작업이 끝나면 상위 컨텍스트는 물론 컨텍스트도 저장됩니다.

흥미롭고 매우 실망한 것은 iOS 6에서 정상적으로 작동한다는 것입니다. 객체를 삽입하거나 삭제하면 가져온 결과 컨트롤러에 변경 사항이 통지되고 모든 것이 예상대로 작동합니다. 그러나 iOS 5에서는 삭제를 제외하고는 모두 작동합니다. 가져온 결과 컨트롤러에 삭제가 통지되지 않습니다. 그러나 ... 수동으로 가져온 결과 컨트롤러를 새로 고치면 (동일한 조건자를 다시 작성하고 다시 작성하면) 예상 결과가 표시됩니다.

주 컨텍스트에서 변경/저장 알림을 등록 할 때 사용자 정보 사전에 삭제 한 개체가 포함되어 있습니다 ... 심지어 iOS 5에서도 볼 수 있습니다!

내가 생각할 수있는 한 가지 문제점은 요인을 제거했기 때문에 파악하지 못했지만이 개체는 다른 개체와 다 대일 관계에 있습니다. 삭제/삽입 할 개체는 "직원"이며 "부서"와 관계가 있습니다. 직원은 무효로 설정되고 부서는 계단식으로 설정됩니다.

내가 말했듯이, iOS6에서는 정상적으로 작동하지만 iOS5에서는 정상적으로 작동하지 않습니다.

모든 도움말이 도움이 될 것입니다.

답변

1

이 버그는 영구 저장소에 저장했기 때문에 발생합니다. 이 자식 컨텍스트는 자체 저장하고, 부모는 기본 관리 객체 컨텍스트 인 블록을 호출합니다. 기본 관리 객체 컨텍스트가 저장되면 영구 컨텍스트에 쓰는 백그라운드 컨텍스트가 트리거됩니다. 백그라운드 컨텍스트 저장을 제거 할 때 가져온 결과 컨트롤러가 예상대로 업데이트되었습니다.

내가 아마도이 문제를 일으킨 것으로 생각되는 흥미로운 점은 내가 상점에 저장하려고 할 때마다 관리 대상이 새어 나왔다는 것입니다. 이 문제를 해결하는 방법을 정확히 모르겠지만 그 이유를 아는 것이 좋습니다.

관련 문제