核心数据删除不起作用

时间:2015-10-24 11:23:58

标签: ios objective-c iphone ios7 ios5

您好我正在尝试删除下面编码中的核心数据保存值,但它显示已删除,当我再次运行它显示的项目时,包括已删除的值意味着它不会从核心数据中删除

任何人都能帮助我......

    - (IBAction)Delete:(id)sender
    {

        AppDelegate * appdel = (AppDelegate *)[[UIApplication sharedApplication]delegate];
        NSString *soughtPid= self.text1.text;

        NSEntityDescription * productEntity = [NSEntityDescription entityForName:@"Students" inManagedObjectContext:appdel.managedObjectContext];
        NSFetchRequest *fetch=[[NSFetchRequest alloc] init];
        [fetch setEntity:productEntity];
        NSPredicate *p=[NSPredicate predicateWithFormat:@"name == %@", soughtPid];
        [fetch setPredicate:p];
        //... add sorts if you want them
        NSError *fetchError;
        NSArray *fetchedProducts=[appdel.managedObjectContext executeFetchRequest:fetch error:&fetchError];
        // handle error
        for (NSManagedObject *product in fetchedProducts) {
            [appdel.managedObjectContext deleteObject:product];



            NSLog(@"Deleted Names : %@",[product valueForKey:@"name"]);
            NSLog(@"****.......*****");
        }
         [tableview reloadData];
    }

Core Data Available values are 4 mentioned bellow.

2015-10-24 16:47:23.588 usecoredattuts[2293:108804] Names : Rahman
2015-10-24 16:47:23.589 usecoredattuts[2293:108804] Names : Karthi
2015-10-24 16:47:23.589 usecoredattuts[2293:108804] Names : Ravi
2015-10-24 16:47:23.589 usecoredattuts[2293:108804] Names : Abdul

After deleted one value mentioned bellow

2015-10-24 16:47:31.986 usecoredattuts[2293:108804] Deleted Names : Ravi

When fetching the core data values show like this

2015-10-24 16:47:41.521 usecoredattuts[2293:108804] Names : Rahman
2015-10-24 16:47:41.521 usecoredattuts[2293:108804] Names : Abdul
2015-10-24 16:47:41.521 usecoredattuts[2293:108804] Names : Karthi

Final After stoping the xcode and again when run the project I got the bellow names.

2015-10-24 16:52:10.438 usecoredattuts[2308:110460] Names : Rahman
2015-10-24 16:52:10.438 usecoredattuts[2308:110460] Names : Karthi
2015-10-24 16:52:10.438 usecoredattuts[2308:110460] Names : Ravi
2015-10-24 16:52:10.438 usecoredattuts[2308:110460] Names : Abdul

That means the name Ravi was not deleted 

有人可以帮助我.......

1 个答案:

答案 0 :(得分:3)

   for (NSManagedObject *product in fetchedProducts) {
        [appdel.managedObjectContext deleteObject:product];

        NSLog(@"Deleted Names : %@",[product valueForKey:@"name"]);
        NSLog(@"****.......*****");
    }

    //After delete. Save the context
    NSError *error = nil;
    [appdel.managedObjectContext save:&error];

   //Rest of your code......

这将解决您的问题。