我使用以下代码填充UITableView
self.navigationItem.leftBarButtonItem = self.editButtonItem;
test_coredataAppDelegate *appDelegate = (test_coredataAppDelegate *)[[UIApplication sharedApplication] delegate];
self._context = appDelegate.managedObjectContext;
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription
entityForName:@"patients" inManagedObjectContext:_context];
[fetchRequest setEntity:entity];
NSError *error;
self.PatientsList = [_context executeFetchRequest:fetchRequest error:&error];
self.title = @"patients";
[fetchRequest release];
其中PatientsList是NSArray
当我想删除记录时我使用
[self._context deleteObject:[_PatientsList objectAtIndex:indexPath.row]];
NSError *error;
if (![_context save:&error]) {
// Handle error
NSLog(@"Unresolved error series %@, %@", error, [error userInfo]);
}
[PatientsList removeObjectAtIndex:indexPath.row] ;
[self.tableView reloadData];
但这没有任何效果。
如何解决此问题并成功删除,尤其是当我的模型包含关系时?
答案 0 :(得分:1)
这里你从db中删除它,但不是从数组中删除它,所以你需要从数组中删除或调用数据库,以便再次使用新的db详细信息加载arry。
所以对于第一种方法,从数组中删除它会使你的数组变得可变并使用
removeObjectAtIndex
删除对象的方法
或者在第二种方法中,您需要从核心数据中再次获取数据。
然后使用
重新加载表[table reloadData];
答案 1 :(得分:0)
您是否可以在致电deleteObject:
之前和之后发布有关您从获取请求中获得的结果的更多信息?您还可以检查传递给某些Core Data函数的 NSError 对象的userInfo
属性,因为这通常会在Core Data中提供非常有用的帮助信息。还要记住,在使用 NSManagedObjectContext 实例的save:
方法保存数据模型之前,您的修改不会“一成不变”。
Core Data处理已删除对象关系的方式在Core Data架构(.xcdata文件)中定义,您可以在Xcode中进行编辑。您可以在此处将关系的删除操作设置为“拒绝”,“无效”,“级联”或“无操作”。请参阅documentation found here的“关系删除规则”部分。