1

저는 꽤 오랫동안 어려움을 겪고 있습니다.NSManagedObject 업데이트로 NSFetchedResultsController가 발생합니다.

일부 컨텍스트와 세부 정보를 제공하기 위해 iOS UISplitViewController 응용 프로그램 - 표준 마스터/세부 정보 항목이 있습니다. 마스터보기는 NSFetchedResultsController (SQLite 데이터 저장소에서 NSManagedObjects를로드하는)로 백업 된 UITableView입니다.

세부보기 (NSManagedObject 및 궁극적으로 SQL 데이터 저장소로 플러시되는 '마스터 레코드'를 업데이트 할 수 있음) 내의 모든 업데이트로 인해 NSFetchedResultsController에서 DELETE 작업이 발생합니다.

NSManagedObject 속성에 쓰기가 어떤 종류의 오류를 일으키고 NSFetchedResultsController가 캐시 된 결과 집합에서이를 삭제하도록하기 때문에 이것이 원인이라고 가정합니다. 최종 결과는 레코드가 마스터보기에서 '누락'됩니다 (예 : UITableCellView가 마스터 UITableView에서 제거됨).

사람이 전에이 문제를 경험하고 가능한 몇 가지 지침을 제공 할 수있다 ...

문제

내가 이런 일이 싶지 않아 내가 아무 생각이 어떻게을 멈추지해야? 이 질문에 대답하는 경우 사전에

감사합니다, 벤

답변

0

는 잘 모르겠지만, 내가 가지고 있던 비슷한 문제에 대한 해결책을 알아 냈어. 각 개체 이름의 첫 글자로 Core Data-backed UITableView에서 개체를 정렬했습니다. 내가 읽은 튜토리얼에서 NSManagedObject 서브 클래스에 일시적인 속성 인 'NameInitial'을 넣으려고했다. NSManagedObject 서브 클래스에 그 객체 이름의 첫 글자를 채울 것이다. 그런 다음 해당 속성을 내 SectionNameKeyPath로 사용하여 개체를 내 UITableView의 적절한 섹션으로 정렬했습니다.

각 셀에 해당 셀과 연결된 개체의 속성을 업데이트하는 단추가 있었으며 제대로 didChangeObject 대리자 함수에서 NSFetchedResultsChangeUpdate 메시지를 받았습니다. 그러나 때로는 셀이 삭제 될 것이고 명백한 이유없이 NSFetchedResultsChangeDelete 메시지를 받게됩니다.

그런 다음 삭제 된 셀의 관련 개체에 대한 NameInitial 속성이 null 인 것으로 나타났습니다. 나는 일시적인 NameInitial이 메모리에만 저장된다는 것을 잊어 버렸기 때문에 항상 유지 관리되는 것은 아닙니다. 셀을 업데이트 할 때마다 수동으로 NameInitial 속성을 다시 채우면 삭제가 중단됩니다. 따라서 일시적인 속성을 사용하여 UITableView를 정렬/섹션 화하는 경우이 문제가 발생할 수 있습니다.

호프가 도움이되고 행운을 빕니다. -Rick

관련 문제