我遇到了核心數據中的上下文無法保存的問題。核心數據在刪除後試圖保存時崩潰
當我嘗試調用[context save:]時,發生隨機崩潰。有時它可以工作,有時它不會崩潰應用程序。這是我的刪除代碼。我已經能夠通過檢查[contextrespondsToSelector]保存來減少崩潰的次數。奇怪的是,即使它失敗(respondsToSelector失敗),我沒有調用保存,它仍然被刪除!?但是,當respondsToSelector成功時,我試圖調用save,它仍然有時會崩潰。所以這段代碼在測試中更穩定一些,但我認爲Core Data和save方法有問題。追查問題非常困難,因爲它確實看起來是隨機的。
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {
if (editingStyle == UITableViewCellEditingStyleDelete) {
// Delete the managed object.
NSManagedObjectContext *context = [self.fetchedResultsController managedObjectContext];
Accidents* accidentDelete = [self.fetchedResultsController objectAtIndexPath:indexPath];
[context deleteObject:accidentDelete];
// Causing crash...
NSError *error = nil;
if ([context respondsToSelector:@selector(save:)])
if (![context save:&error]) {
// Update to handle the error appropriately.
NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
exit(-1); // Fail
}
else
NSLog(@"Error! Context does not respond to save!");
}
}
我沒有得到一個不好的訪問,而是一個SIG-BIT。但是,添加環境變量的提示是我需要弄清楚它爲什麼會崩潰的原因。出於某種原因,我過早發佈了一個日期對象,然後訪問它。當核心數據去保存它時,它不再存在並且崩潰。我通過將日期對象設置爲自動釋放對象[NSDate日期]來解決此問題。它現在似乎工作。啓用environ變量後,我收到一條控制檯消息,說我正在向發佈的日期對象發送消息,這是我需要的提示。 – 2010-10-05 07:24:33