2013-12-11 145 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集成:-) –

相關問題