Ios 从核心数据中删除特定对象

Ios 从核心数据中删除特定对象,ios,core-data,delete-row,Ios,Core Data,Delete Row,我有一个包含核心数据对象的UITableView。当您单击一行时,您将被带到另一个视图控制器,该控制器具有删除图像和其他内容的选项。如何基于所选行删除特定对象核心数据。假设我选择了一个图像,然后单击“显示视图”控制器中的“删除”按钮,它将只删除我选择的图像 编辑添加的删除详细视图控制器的代码 NSError *error = nil; [self.managedObjectContext deleteObject:self.managedObject]; // REMOVE THIS LI

我有一个包含核心数据对象的UITableView。当您单击一行时,您将被带到另一个视图控制器,该控制器具有删除图像和其他内容的选项。如何基于所选行删除特定对象核心数据。假设我选择了一个图像,然后单击“显示视图”控制器中的“删除”按钮,它将只删除我选择的图像

编辑添加的删除详细视图控制器的代码

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并检查错误。与您的注释中的代码相同。