在xcode中,我试图添加一些方法来记录从tableview中删除的内容。
这是我的删除代码
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
{
NSManagedObjectContext *context = [self managedObjectContext];
if (editingStyle == UITableViewCellEditingStyleDelete) {
// Delete object from database
[context deleteObject:[self.contacts objectAtIndex:indexPath.row]];
NSError *error = nil;
if (![context save:&error]) {
NSLog(@"Can't Delete! %@ %@", error, [error localizedDescription]);
return;
}
NSManagedObject *device = [self.contacts objectAtIndex:indexPath.row];
NSLog(@"Deleting %@ ", [device valueForKey:@"name1"]);
// Remove contact from table view
[self.contacts removeObjectAtIndex:indexPath.row];
[self.tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];
}
}
除了这两行之外所有相当标准的东西
NSManagedObject *device = [self.contacts objectAtIndex:indexPath.row];
NSLog(@"Deleting %@ ", [device valueForKey:@"name1"]);
我正在尝试在删除之前访问此行中的字段中的数据,但NSLog返回null。我尝试了其他变种,并有一个版本返回上一行中的变量!
我在这里缺少什么?
答案 0 :(得分:2)
您尝试在删除对象后打印对象并通过保存提交此操作。
您可以移动以下行:
NSManagedObject *device = [self.contacts objectAtIndex:indexPath.row];
NSLog(@"Deleting %@ ", [device valueForKey:@"name1"]);
在您致电[context save:&error]
之上
答案 1 :(得分:0)
在我看来,您在删除数据后尝试访问数据。移动这个
NSManagedObject *device = [self.contacts objectAtIndex:indexPath.row];
NSLog(@"Deleting %@ ", [device valueForKey:@"name1"]);
之前
[context deleteObject:[self.contacts objectAtIndex:indexPath.row]];