Ios 从核心数据中删除特定对象
我有一个包含核心数据对象的UITableView。当您单击一行时,您将被带到另一个视图控制器,该控制器具有删除图像和其他内容的选项。如何基于所选行删除特定对象核心数据。假设我选择了一个图像,然后单击“显示视图”控制器中的“删除”按钮,它将只删除我选择的图像 编辑添加的删除详细视图控制器的代码Ios 从核心数据中删除特定对象,ios,core-data,delete-row,Ios,Core Data,Delete Row,我有一个包含核心数据对象的UITableView。当您单击一行时,您将被带到另一个视图控制器,该控制器具有删除图像和其他内容的选项。如何基于所选行删除特定对象核心数据。假设我选择了一个图像,然后单击“显示视图”控制器中的“删除”按钮,它将只删除我选择的图像 编辑添加的删除详细视图控制器的代码 NSError *error = nil; [self.managedObjectContext deleteObject:self.managedObject]; // REMOVE THIS LI
NSError *error = nil;
[self.managedObjectContext deleteObject:self.managedObject];
// REMOVE THIS LINE NO NEED TO CALL SAVE TWICE
//[self.managedObjectContext save:&error];
if (![self.managedObjectContext save:&error]) {
NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
abort();
} else {
NSLog(@"Video and Photo Deleted");
}
如果要在UITableView中删除,并且假设使用的是fetchedResultsController,通常会使用类似的方法
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
{
if (tableView == self.tableView) {
if (editingStyle == UITableViewCellEditingStyleDelete) {
NSManagedObjectContext *context = [self.fetchedResultsController managedObjectContext];
[context deleteObject:[self.fetchedResultsController objectAtIndexPath:indexPath]];
}
}
}
但是,如果您在某个detailedViewController中,那么假设您将managedObjectContext和managedObject传递给了这个detailedViewController(self),您就可以使用它。再次假设您正在将fetchedResultsController与UITableView结合使用,以便在UITableView中正确反映删除
[self.managedObjectContext deleteObject:self.managedObject];
通过创建属性并按如下方式设置属性,可以将这些属性传递给detailedViewController
@interface DetailedViewController: UIViewController
@property (strong, nonatomic) NSManagedObject *detailItem;
@property (strong, nonatomic) NSManagedObjectContext *managedObjectContext;
@end
创建detailedViewController后,设置如下所示的属性
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
NSManagedObject *object = [[self fetchedResultsController] objectAtIndexPath:indexPath];
// Code to create detailed view and set properties
DetailedViewController *detailedViewController = [DetailedViewController alloc] ...;
detailedViewController.managedObjectContext = self.managedObjectContext;
detailedViewController.managedObject = object;
[self.navigationController pushViewController:detailViewController animated:YES];
}
显示您用于使用数据填充UITableView的代码,以及如何将对象传递给详细视图控制器。那么我要将managedObject设置为什么,这是实体或managedObjectContext的名称吗?刚刚更新了答案,以显示如果您使用的是fetchedResultsController,您将如何检索对象。听起来您需要了解一些核心数据,NSFetchedResultsController和UITableView集成:-)是否存在以及错误消息,如“if(![self.managedObjectContext save:&error]){NSLog(@“Unresolved error%@,%@”,error,[error userInfo]);“但是要删除?您需要保存以提交删除,所以只需在删除后调用save并检查错误。与您的注释中的代码相同。