我有一個簡單的方法,它只需要兩個託管對象ID,爲它們提取managedObjects,創建一個關係,然後將它們保存到managedObjectContext中。調試器在覈心數據保存時停止,但沒有錯誤輸出
當我在managedObjectContext上執行保存時,調試器在保存行上停止,並引用nsmanagedObjectContext保存的objc_exception_throw。雖然輸出的nserror對象中沒有輸出,但它提供了有關拋出異常的詳細信息。它也看起來好像這個保存工作正常,這使得這更加令人困惑。
這裏是有問題的方法...
- (void)relateLocationToInvite:(NSManagedObjectID *)locationID :(NSManagedObjectID *)inviteID {
NSManagedObject *invite = [self.managedObjectContext objectWithID:inviteID];
NSManagedObject *locationObj = [self.managedObjectContext objectWithID:locationID];
Location *location = (Location *)locationObj;
[invite setValue:location forKey:@"location"];
NSError *error = nil;
if(![self.managedObjectContext save:&error]){
NSLog(@"Error relating a location to an invite %@",error);
}
}
如果確實異常正在從某處扔在覈心數據棧,所述'error'變量:在設備(ARM架構),相同的結果可使用(如果我的記錯我正確地)來實現可能沒有機會獲得設定。錯誤在驗證失敗等情況下返回,但如果遇到內部不一致性錯誤或類似錯誤,則會拋出異常而不寫任何有意義的錯誤對象。 – warrenm 2012-03-20 19:46:18
如果你還沒有一個,你可以設置一個異常斷點,以在創建異常時捕捉異常,而不是等待異常拋出。這可能會給你更大的碰撞預測背景。您也可以在調試控制檯中使用'bt'命令來獲取故障的堆棧跟蹤。這只是一般性的建議,因爲如果沒有更多關於項目的知識,就很難說出可能出現的問題。 – warrenm 2012-03-20 19:50:51