0

사과의 핵심 데이터 요리법 샘플 코드와 비슷한 앱으로 작업하고 있습니다. Apple의 연락처 앱과 마찬가지로 세부 정보보기에서 항목을 삭제할 수 있기를 원합니다.세부 정보보기에서 핵심 데이터 항목을 어떻게 삭제합니까?

아래 코드는 선택한 항목이 아닌 첫 번째 항목을 삭제하는 코드입니다. 내가 뭘 잘못하고 있는지 모르겠다.

NSIndexPath *indexPath = [myTableView indexPathForSelectedRow]; 
NSManagedObjectContext *context = [fetchedResultsController managedObjectContext]; 
[context deleteObject:[fetchedResultsController objectAtIndexPath:indexPath]]; 
[myTableView reloadData]; 

답변

0

가장 큰 문제는 indexPathForSelectedRow:이 (으)로 생각되는 indexpath를 반환하지 않는다는 것입니다. 또는 가져온 결과 컨트롤러를 구성 할 때 섹션 이름 키 경로가 올바르게 설정되어 있지 않으면 어떤 섹션이 어떤 섹션과 연결되는지 트랙을 잃어 버리기 때문에 이상한 결과를 얻을 수 있습니다.

+0

나는이 모든 잘못에 대해 갈 것입니다. 사용자가 시작한 항목을 취소 할 수있는 권한을 부여하려고합니다. 또는 항목 작성을 마쳤 으면 항목을 삭제할 수 있습니다. 위의 코드를 트리거하는 RootController에 대한 대리자 인 AddViewController에 취소 단추가 있습니다. 사용자가 현재 작업하고있는 항목을 알 수 있도록 IndexPath를 얻으려면 어떻게해야합니까? – Sam

+0

indexPath를 신경 쓸 필요가 없습니다. managedObject에 대한 참조가 있어야하며 managedObjectContext에서이를 삭제할 수 있습니다. fetchedResultsController는 당신을 위해 삭제를 처리하고 테이블을 자동으로 업데이트해야합니다. – MrHen

+0

예, 동의합니다. 상세보기에서와 같이 손에있는 객체가있는 경우 가져온 결과 제어기 또는 다른 곳에서 색인을 사용할 필요가 없습니다. 각 관리 객체는 해당 컨텍스트에 연결됩니다. 그냥 삭제하고 삭제하도록 컨텍스트에 지시하십시오. 가져온 결과 컨트롤러가 컨텍스트를 관찰하고 자동으로 테이블을 업데이트합니다. – TechZen

2

도움 주셔서 감사합니다. 이것은 트릭을 한 코드입니다

NSManagedObjectContext *context = [fetchedResultsController managedObjectContext]; 
[context deleteObject:entry]; 
[myTableView reloadData]; 
관련 문제