이 문제가 거의 발생하지만 테이블을 검색 한 후에 입력 한 상세 뷰에서 managedObjectContext를 업데이트하면 NSFetchedResultsChangeUpdate가 넘어지게됩니다.검색된 테이블 뷰에서 NSFetchedResultsChangeUpdate가 충돌하면
핵심 데이터 세트에서 생성 된 tableview가 있습니다. 이 테이블에서 상세보기를 입력하고 아무런 문제없이 변경할 수 있습니다. 또한 테이블을 검색하고 아무런 문제없이 시간을 최대한 변경할 수 있습니다. 그러나 어떤 개체에서는 "핵심 데이터 변경 처리 중에 예외가 발생했습니다"라는 메시지가 나타납니다.
NSFetchedResultsChangeUpdate까지 추적했습니다. 다음 코드를 사용하고 있습니다.
case NSFetchedResultsChangeUpdate:
if (searchTermForSegue)
{
NSLog(@"index info:%@.....",theIndexPath);
NSLog(@"crashing at the next line");
[self fetchedResultsController:self.searchFetchedResultsController configureCell:[tableView cellForRowAtIndexPath:theIndexPath] atIndexPath:theIndexPath];
break;
} else {
[self fetchedResultsController:controller configureCell:[tableView cellForRowAtIndexPath:theIndexPath] atIndexPath:theIndexPath]; }
break;
테이블을 검색하지 않으면 else 메서드가 실행되고 100 % 시간이 작동합니다. 테이블을 검색 할 때 if (searchTermForSegue)를 실행하면 대부분의 경우 작동하지만 항상 그런 것은 아닙니다. 나는 theIndexPath를 기록하고 다음을 발견했다 :
그것이 작동하면 theIndexPath는 indexPat 객체를 올바르게보고하고 실패 할 때 잘못된 theIndexPath가 호출되었다. 예를 들어, I 3 부 2 개 제 항목 1 초에서, 제 1 행있는 tableView 좁아 검색을 수행하는 경우, I는 다음 nslog 얻을 :
On first object: index info:<NSIndexPath 0xb0634d0> 2 indexes [0, 0].....
on second object: index info:<NSIndexPath 0xb063e70> 2 indexes [0, 1].....
on third object: index info:<NSIndexPath 0xb042880> 2 indexes [1, 0].....
but on the last object: index info:<NSIndexPath 0x9665790> 2 indexes [2, 17].....
가 호출되어야한다 [2,0을 ]
이 개체를 삭제하거나 새 개체를 추가하는 것이 아니라 단순히 개체를 업데이트하는 것입니다.
의견을 보내 주시면 감사하겠습니다.