我遇到了另一個問題,我的Iphone應用程序無法解決我自己。 我在我的最新應用中實現了一種組織者功能。 在那裏可以創建約會,這些約會顯示在tableview中並保存在CoreDataStore中。我用4類:更改核心數據項崩潰應用程序
- 哪裏約會顯示
- 與文本框,以便投入值地點和約定的名稱概述(創建/編輯視圖)
- 與DatePicker的一個視圖定義啓動 - 和ENDDATE
- 控制器,其處理使用該方法的產品創建和刪除:
的代碼:
-(void)createAppointmentObjectWithDate:(NSDate *)
appointmentDate name:(NSString *)appointmentName
description:(NSString *)appointmentDescription
eDate:(NSDate *)appointmentEndDate
{
NSManagedObjectContext *managedObjectContext = [[CoreDataManager sharedManager] managedObjectContext];
AppointmentObject *newAppointmentObject = [NSEntityDescription insertNewObjectForEntityForName:AppointmentObjectEntityName
inManagedObjectContext:managedObjectContext];
newAppointmentObject.appointmentName = appointmentName;
newAppointmentObject.appointmentDescription = appointmentDescription;
newAppointmentObject.appointmentDate = [appointmentDate earlierDate:appointmentEndDate];
newAppointmentObject.appointmentEndDate = [appointmentEndDate laterDate:appointmentDate];
}
-(void)deleteAppointmentObject:(AppointmentObject *)appointmentObject triggeredByUser:(BOOL)byUser{
NSManagedObjectContext *managedObjectContext = [[CoreDataManager sharedManager] managedObjectContext];
[managedObjectContext deleteObject:appointmentObject];
}
但所有種類的瘋狂的事情正在發生,這使得我的應用程序崩潰與「SICBART」消息:
2010-10-13 17:35:04.630 didacta[109:307] Serious application error. Exception was caught during Core Data change processing.
This is usually a bug within an observer of NSManagedObjectContextObjectsDidChangeNotification.
-[CALayer controllerWillChangeContent:]: unrecognized selector sent to instance 0x19f150 with userInfo (null)
2010-10-13 17:35:05.118 didacta[109:307] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[CALayer controllerWillChangeContent:]: unrecognized selector sent to instance 0x19f150'
中出現錯誤,而這樣做:
- 創造新的任命和按「完成「(應觸發創建和彈出概述)
- 更改約會並按下」完成「(應發送更改並彈出概述)
- 點擊關於指定換貨的概述(應該彈出創建/編輯視圖,交出值)
- 刪除項目
有時我甚至可以刪除約會,但隨後的項目中實現代碼如下順序以某種方式得到扭轉,在tableview的索引不再指向約會的索引。
我再次搜索了代碼,但是沒有地方可以取消分配代理。但現在我終於可以重現一個錯誤:我的約會按日期排序。當我更改某個項目的日期時,由於某種原因,Tableview停止刷新。但是,我通過fetchedResults控制器得到的項目順序仍然正確(在正確的位置使用更改日期的項目)。我通過viewWillAppear中的「reloaddata」更新Tableview。這可能是一個痕跡? – Amandir 2010-10-14 16:17:06
更確切地說:CellForRow不再被調用。不是通過委託而是通過reloadData。當我關閉應用程序並重新啓動它。約會是正確的順序和tableView的更新再次工作。 – Amandir 2010-10-14 16:54:14
他意味着您要麼取消分配獲取的結果控制器的委託,要麼已將CALayer分配爲委託。當您更改數據時,CALayer將收到委託錯誤。如果錯誤是一致的,那麼您已將CALayer指定爲代碼中的代理。 – TechZen 2010-10-15 21:42:31