2011-09-26 52 views
0

我想刪除一個託管對象,有什麼我失蹤?NSManagedObject刪除不起作用,仍然可以檢索對象

[managedObjectContext deleteObject:managedObject]; 

NSError *error; 

if (![self.managedObjectContext save:&error]) { 
    NSLog(@"Whoops, couldn't save: %@", [error localizedDescription]); 
    return NO; 
} 

return YES; 

當我運行這段代碼時,對象仍然可以被檢索。

NSManagedObject *objectiveManagedObject = [managedObjectContext objectWithID:objectID]; 

return (ObjectiveManagedObject *)objectiveManagedObject; 

回答

0

如果你

[[self managedObjectContext] setPropagatesDeletesAtEndOfEvent:NO] 

第一,會發生什麼?

+0

這會導致其他代碼中斷,這會在單元測試之間清除數據庫 – TheLearner

0

我注意到您已在self.managedObjectContextmanagedObjectContext之間切換。你確定這些是相同的變量嗎?避免直接訪問你的ivars;使用訪問器(initdealloc除外)。這避免了各種問題。

您確定managedObject的ID爲objectID?它們可能是兩個看似相似的對象。

+0

是的,我確定。我已經記錄了多次objectID – TheLearner

0

保存鑑於以前的答案沒有檢查出來,我會說,最有可能的解釋是,管理對象是在需要的關係的最後一個對象。因此,只有在關係另一端的對象被刪除或第二個對象被添加到關係之後,它才能被刪除。

您可能還想檢查持久性存儲未設置爲只讀。我不記得你試圖寫一個只讀商店時得到的錯誤。

此外,您可能需要等待幾秒鐘才能測試該對象。節省是磁盤操作,因此相對較慢。保存實際上可能失敗。

在任何情況下,您都應該從保存中捕獲錯誤返回。

相關問題