访问 indexPath.row 字段变量

accessing indexPath.row field variables

在 xcode 中,我试图添加一些方法来记录从表视图中删除的内容。

这是我的删除代码

- (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 returns 为空。我尝试了其他变体,并且有一个版本返回了前一行中的变量!

我在这里错过了什么?

您正在尝试在删除对象并通过保存提交此操作后打印对象。

您只需移动以下几行:

 NSManagedObject *device = [self.contacts objectAtIndex:indexPath.row];
 NSLog(@"Deleting %@ ", [device valueForKey:@"name1"]);

在您拨打 [context save:&error]

上方

在我看来,您在删除数据后试图访问这些数据。移动这个

    NSManagedObject *device = [self.contacts objectAtIndex:indexPath.row];
   NSLog(@"Deleting %@ ", [device valueForKey:@"name1"]);

在此之前

[context deleteObject:[self.contacts objectAtIndex:indexPath.row]];