2011-03-08 88 views
0

我使用下面的代碼來填充一個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]; 

其中PatientsList是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]; 

記錄,但是這並未沒有任何效果。

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

回答

1

這裏你從數據庫中刪除它,但不是從數組中刪除,所以你需要從數組或數據庫中刪除,再次加載新的數據庫細節。

所以對於第一種方法從數組中刪除它使你的陣列可變的,並且使用 removeObjectAtIndex方法刪除對象

或第二種方法則需要從核心數據再次獲取數據。

,然後使用

[table reloadData]; 
+0

啊終止 - 我以爲他說的是底層的數據模型(即,如果他沒有其他讀取請求時,他會看到新self.PatientsList沒有區別和舊的)。 – 2011-03-08 10:23:53

+0

我更新了它,但它導致應用程序終止任何解決該問題的建議 – Ali 2011-03-08 10:54:55

+0

更新有問題的代碼,並給出從數據庫創建陣列以及從核心數據中刪除對象的位置的完整代碼 – Ishu 2011-03-08 10:57:55

0

您可以在致電deleteObject:之前和之後發佈有關從獲取請求獲得的結果的更多信息?您還可以檢查您傳遞給某些核心數據函數的對象的NSError屬性的userInfo屬性,因爲這通常會在覈心數據中提供非常有用的幫助信息。還要記住,除非使用您的NSManagedObjectContext實例的​​方法保存數據模型,否則您的修改不會「被設置」。

核心數據處理已刪除對象的關係的方式在覈心數據模式(.xcdata文件)中定義,您可以在Xcode中編輯它。您可以在這裏將關係的刪除操作設置爲「拒絕」,「取消」,「級聯」或「無操作」。請參閱documentation found here的'關係刪除規則'部分。

+0

重裝表我說,如果([_環境保存:錯誤]!){ \t \t \t //處理錯誤 \t \t \t的NSLog(@「未解決的錯誤系列%@ ,%@「,錯誤,[error userInfo]); \t \t \t \t \t} 但它會導致程序沒有錯誤 – Ali 2011-03-08 10:19:23