[英]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];
當然,如果您的應用程序中還有其他“便簽本”,則需要同步保存在核心數據中的那些更改。
完成對托管對象模型的更改后,請使用NSManagedObjectContext
的save:
方法
希望這可以幫助!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.