删除核心数据对象和表格单元
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];
【讨论】:
以上是关于删除核心数据对象和表格单元的主要内容,如果未能解决你的问题,请参考以下文章