簡體   English   中英

核心數據刪除不起作用

[英]core data delete not work

我使用以下代碼填充UITableView

self.navigationItem.leftBarButtonItem = self.editButtonItem;

test_coredataAppDelegate *appDelegate = (test_coredataAppDelegate *)[[UIApplication sharedApplication] delegate];
self._context = appDelegate.managedObjectContext;


NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription 
                               entityForName:@"patients" inManagedObjectContext:_context];
[fetchRequest setEntity:entity];
NSError *error;
self.PatientsList = [_context executeFetchRequest:fetchRequest error:&error];
self.title = @"patients"; 
[fetchRequest release];

PatientList是NSArray

當我想刪除記錄時

[self._context  deleteObject:[_PatientsList objectAtIndex:indexPath.row]];

    NSError *error; 

    if (![_context save:&error]) {
        // Handle error
        NSLog(@"Unresolved error series %@, %@", error, [error userInfo]);

    }

    [PatientsList removeObjectAtIndex:indexPath.row] ; 


    [self.tableView reloadData];

但這沒有任何作用。

如何解決此問題並成功刪除,尤其是當我的模型包含關系時?

在這里,您可以從數據庫中刪除它,但不能從數組中刪除它,因此您需要從數組中刪除或調用數據庫,以便再次使用新的數據庫詳細信息加載文件。

因此,對於第一種方法,將其從數組中刪除使其可變,並使用removeObjectAtIndex方法刪除對象

或者采用第二種方法,則需要再次從核心數據中獲取數據。

然后通過使用重新加載表

[table reloadData];

在調用deleteObject:之前和之后,您是否可以發布有關從獲取請求中獲得的結果的更多信息? 您還可以檢查傳遞給某些Core Data函數的NSError對象的userInfo屬性,因為它通常會在Core Data中提供非常有用的信息。 還要記住,在使用NSManagedObjectContext實例的save:方法保存數據模型之前,您所做的修改不會“ 一成不變”

在您的Core Data模式(.xcdata文件)中定義了Core Data處理已刪除對象關系的方式,您可以在Xcode中對其進行編輯。 您可以在此處將關系的刪除操作設置為“ Deny”,“ Nullify”,“ Cascade”或“ No Action”。 請參閱位於此處文檔的“關系刪除規則”部分。

暫無
暫無

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

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