2013-12-11 101 views
0

我有一个包含核心数据对象的UITableView。当你点击一行时,你会看到另一个视图控制器,其中包含删除图像的选项。我将如何根据所选的行删除特定的对象核心数据。所以说,我会选择一个图像,然后点击呈现的视图控制器中的删除按钮,它会删除我选择的图像。从核心数据中删除特定对象

编辑添加的代码在DetailedViewController

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"); 
} 
+0

后传递这些到detailedViewController显示代码您是否使用数据填充UITableView以及如何将对象传递给详细的视图控制器。 –

回答

0

的删除通常你会使用这样的事情,如果你在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(个体经营)你只用这个。再一次假设您将fetchedResultsController与UITableView结合使用,因此删除操作正确地反映在UITableView中。

[self.managedObjectContext deleteObject:self.managedObject]; 

可以通过创建属性和设置像这样

@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]; 
} 
+0

那么我将managedObject设置为,这是实体的名称还是managedObjectContext? – matthew

+0

刚刚更新了答案,以显示如何使用fetchedResultsController来检索对象。 –

+0

听起来像你需要阅读一些核心数据,NSFetchedResultsController和UITableView集成:-) –

相关问题