访问indexPath.row字段变量

时间:2015-01-15 20:37:45

标签: ios xcode core-data

在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。我尝试了其他变种,并有一个版本返回上一行中的变量!

我在这里缺少什么?

2 个答案:

答案 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]];