簡體   English   中英

無法持續使用Core Data刪除記錄

[英]Can not persist the deletion of a record using Core Data

我在一個簡單的表視圖應用程序中使用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"])
{

}
}

我不知道為什么刪除的記錄會重新出現。 這會在模擬器和設備上發生。 我在模擬器上“重置了內容和設置”,但還是沒有運氣。

任何建議,不勝感激。 提前致謝。

上下文是一個“便簽本”。 “便簽本”概念使您可以在該“便簽本”中進行本地更改,例如修改記錄或刪除記錄,並在決定時也放棄更改。

您還可以具有多個上下文或“便簽本”,通常每個線程中都有一個上下文,例如一個用於主線程,另一個用於后台線程。

現在,如果您確定更改是可以的,則需要通過保存上下文來保留更改。

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

當然,如果您的應用程序中還有其他“便簽本”,則需要同步保存在核心數據中的那些更改。

完成對托管對象模型的更改后,請使用NSManagedObjectContextsave:方法

希望這可以幫助!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM