我的tableviewcontroller
表現不正常。比方說,我添加2個對象:dog
和cat
。TableViewController未正確刪除單元格?
- dog
- cat
然後我刪除貓。
- dog
然後我添加第三個(在這一點第二個)對象bird
。細胞將填充cat
而不是鳥。伯德最終沒有被保存在某個地方,我的名單結果是:
- dog
- cat
有誰知道這可能是這種行爲的原因是什麼?我沒有在代碼中尋找特定的錯誤,因爲代碼太多而無法顯示。我希望你們能知道我應該看看解決這個問題。如果你們想以任何方式查看我的一些代碼,請告訴我。謝謝。
編輯:所以我有控制檯打印出數組中的所有對象,只要有東西被刪除。對象正在被添加/刪除到數組中,所以看起來我的單元格沒有正確填充數據。
這裏是cellForRowAtIndexPath
:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
UITableViewCell* cell = [tableView dequeueReusableCellWithIdentifier:@"cell"];
if(!cell){
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"cell"];
Employee* tempEmployee = [[[EmployeeStore store] employees] objectAtIndex:indexPath.row];
NSString* label = [NSString stringWithFormat:@"N. %@ P. %@", tempEmployee.name, tempEmployee.pin];
[[cell textLabel] setText: label];
}
return cell;
}
下面是我用它來刪除:
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath{
if(editingStyle == UITableViewCellEditingStyleDelete){
NSMutableArray* employees = [[EmployeeStore store] employees];
[[EmployeeStore store] removeEmployee:[employees objectAtIndex:indexPath.row]];
[tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];
}
}
這裏是我的EmployeeStore類removeEmployee:
被稱爲在上述方法:
-(void) removeEmployee:(Employee*)e{
[context deleteObject:e];
[employees removeObject:e];
}
編輯2:我的應用程序正在利用核心數據來保存表格條目。當我關閉應用程序並再次運行時,錯誤會自行修復(意味着它正確地從上下文加載)。如此這般從
- dog
- cat
的預期:
- dog
- bird
似乎是不正確的更新?
請發佈刪除單元格並顯示單元格的代碼(cellForRowAtIndexPath方法)。 – Girish