핵심 데이터가있는 테이블 뷰에 새 항목을 추가하는 데 문제가 있습니다. 여기 내 코드의 간단한 논리가 있습니다. 내의 ViewController 클래스에서 내가 편집 모드 trigle 할 수있는 버튼이 있습니다 코드이 블록에서데이터 소스로 UITableView 및 Core Data에 새 항목을 추가 하시겠습니까?
- (void) toggleEditing {
UITableView *tv = (UITableView *)self.view;
if (isEdit) // class level flag for editing
{
self.newEntity = [NSEntityDescription insertNewObjectForEntityName:@"entity1"
inManagedObjectContext:managedObjectContext];
NSArray *insertIndexPaths = [NSArray arrayWithObjects:
[NSInextPath indexPathForRow:0 inSection:0], nil]; // empty at beginning so hard code numbers here.
[tv insertRowsAtIndexPaths:insertIndexPaths withRowAnimation:UITableViewRowAnimationFade];
[self.tableView setEditing:YES animated:YES]; // enable editing mode
}
else { ...}
}
를, 내가 먼저 내 현재 관리되는 개체 컨텍스트에 새 항목을 추가하고 난에 새 행을 추가 내 TV. 내 데이터 소스 또는 컨텍스트 내 테이블보기의 행 수의 개체 수 모두 그러나 1
해야한다고 생각 나는 tabView의 경우에 예외를 가지고 : numberOfRowsInSection :
을 잘못된 업데이트 : 섹션 0의 행 수가 잘못되었습니다. 업데이트 (0) 후 기존 섹션에 포함 된 행 수는 업데이트 (0) 이전에 해당 섹션에 포함 된 행 수와 같거나 같아야합니다 해당 섹션에서 삽입 또는 삭제 된 행 수 (삽입 1 개, 삭제 된 0 개)
예외 오른쪽 대리자 이벤트 이후에 제기했다 :
- (NSInteger) tableView:(UITableView *) tableView numberOfRawsInSection:(NSInteger) section {
// fetchedResultsController is class member var NSFetchedResultsController
id <NSFechedResultsSectionInfo> sectionInfo = [[fetchedResultsController sections]
objectAtIndex: section];
NSInteger rows = [sectionInfo numberOfObjects];
return rows;
}
디버그 모드에서, 나는 행이 여전히 0이고 짝수 toggleEditing의 후 호출 이벤트 것으로 나타났다. fetchedResultsController에서 얻은 sectionInfo에 삽입 된 새 엔티티 객체가 포함되지 않은 것처럼 보입니다. 내가 뭔가를 놓쳤다면 확실하지 않습니까? 어떻게 작동하는지 모르겠습니다 : fetnedResultsController를 알리거나 새로운 엔티티가 현재 관리 객체 컨텍스트에 삽입 될 때 변경 사항을 반영 하시겠습니까?