0

我在一个简单的表格视图应用程序中使用 Core Data,它跟踪用户的练习。当一条记录被删除时,删除会在应用程序的启动过程中持续存在。但是,如果我关闭应用程序并重新打开它,记录会重新出现。用户可以从详细视图中删除记录:

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
NSString *title = [alertView buttonTitleAtIndex:buttonIndex];
if([title isEqualToString:@"OK"])
{
    //delete record from database...
    NSEntityDescription *entityDesc = [NSEntityDescription entityForName:@"Parameters" inManagedObjectContext:context];
    NSFetchRequest *request = [[NSFetchRequest alloc] init];
    [request setEntity:entityDesc];

    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"name like %@", parameters.name];
    [request setPredicate:predicate];

    NSError *error;
    NSArray *matchingData = [context executeFetchRequest:request error:&error];

    for (NSManagedObject *obj in matchingData) {
        [context deleteObject:obj];

    }
    [self dismissViewControllerAnimated:YES completion:nil];
}

else if([title isEqualToString:@"Cancel"])
{

}
}

我无法弄清楚为什么删除的记录会重新出现。这发生在模拟器和设备上。我在模拟器上“重置内容和设置”,但仍然没有运气。

非常感谢任何建议。提前致谢。

4

2 回答 2

2

上下文是一个“便签本”。“便签本”概念允许您在该“便签本”中进行本地更改,例如修改记录或删除记录,如果您也决定放弃更改。

您还可以有多个上下文或“便笺簿”,通常每个线程中有一个上下文,例如一个用于主线程,另一个用于后台线程。

现在,如果您确定更改正常,则需要通过保存上下文来保留更改。

NSError *error = nil;
[context save:&error];

当然,如果您的应用程序中有其他“便笺簿”,您将需要同步您保存在核心数据中的那些更改。

于 2013-06-13T23:46:26.663 回答
1

完成对托管对象模型的更改后使用NSManagedObjectContext'方法save:

希望这可以帮助!

于 2013-06-13T23:49:18.690 回答