我有一个包含Core Data对象的UITableView。当您单击某一行时,您将被带到另一个视图控制器,并可选择删除该图像。如何根据我选择的行删除特定的对象核心数据。所以说我会选择一个图像然后单击显示的视图控制器中的删除按钮,它将删除我选择的图像。
EDIT在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 :(得分: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]];
}
}
}
但是如果你在一些detailViewController中,那么假设你将managedObjectContext和managedObject传递给this 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];
}