删除核心数据对象和表格单元

Posted

技术标签:

【中文标题】删除核心数据对象和表格单元【英文标题】:Delete Core data object and tablecell 【发布时间】:2014-01-08 18:38:20 【问题描述】:

当您按滑动并按删除时,我正在尝试删除核心数据中的对象。问题是它删除了表格单元,但是当我再次返回时,已删除的单元格又回来了。我猜那是因为我只删除了 NSMUtableArray(设备)中的对象,并没有删除核心数据对象。我该怎么做?

保存对象的saveTap:

-(void)saveTap:(id)sender
    Entity *newManagedObject = [NSEntityDescription insertNewObjectForEntityForName:@"Entity" inManagedObjectContext:_managedObjectContext];
    [newManagedObject setValue:self.textfield.text forKey:@"playlistName"];
    [newManagedObject setValue:[NSNumber numberWithInt:selectedRowValue] forKey:@"idnumber"];



    // Save the context.
    NSError *error = nil;
    if (![_managedObjectContext save:&error]) 

        NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
        abort();

    

    [self fetchDevices];

    NSLog(@"COUNT %d", [devices count]);

和 commiteditingstyle 方法

- (void)tableView:(UITableView *)tableView commitEditingStyle:        (UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath 
    if (editingStyle == UITableViewCellEditingStyleDelete) 
        [self.devices removeObjectAtIndex:indexPath.row];
        [tableViewData reloadData];    

【问题讨论】:

【参考方案1】:

是 [self.devices objectAtIndex:indexPath.row];返回要删除的 NSManagedObject? 然后你应该像这样制作第二个函数:

- (void)tableView:(UITableView *)tableView commitEditingStyle:        (UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath 
    if (editingStyle == UITableViewCellEditingStyleDelete) 
        [_managedObjectContext deleteObject:[self.devices objectAtIndex:indexPath.row]];
        [_managedObjectContext save:nil];
        [self.devices removeObjectAtIndex:indexPath.row];
        [tableViewData reloadData];    

【讨论】:

【参考方案2】:

而不是在 UitableView 的时候重新加载,你应该只重新加载rowatindexpaths: 并且在它之前 [UITableView 开始编辑]; 并且在重新加载行之后 [UITableView endEditing];

【讨论】:

以上是关于删除核心数据对象和表格单元的主要内容,如果未能解决你的问题,请参考以下文章

带有核心数据删除错误的 NSFetchedResultsController

在表视图中删除核心数据对象

从表格视图中删除单元格

JQuery 获取表格对象

核心数据:没有重复使用表格单元格的索引路径,单元格消失

将表格视图单元格中的数据保存在核心数据中