【问题标题】:Core Data Delete not working核心数据删除不起作用
【发布时间】:2016-01-23 21:23:13
【问题描述】:

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

谁能帮帮我...

    - (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 

有人能帮我解决这个问题吗......

【问题讨论】:

    标签: ios objective-c iphone ios7 ios5


    【解决方案1】:
       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......
    

    这将解决您的问题。

    【讨论】:

    • 哦!我错过了:[appdel.managedObjectContext save:&error];非常感谢您的解决,现在可以正常使用了
    • @abdulheru 我很高兴。很高兴知道您的问题已得到解决。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-20
    • 1970-01-01
    • 2011-02-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多