假設我有一個名爲Player
的CoreData實體類型,並且它具有名爲PlayerPurpose
的實體類型的一對一關係(purpose
)。爲了完整性,假設我們在PlayerPurpose
中有一個反比關係,稱爲parentPlayer
。請看下面的SWIFT代碼:iOS中的孤兒對象CoreData
// Assume we already have a player object in a NSManagedObjectContext called context:
player.purpose = NSEntityDescription.insertNewObjectForEntityForName("PlayerPurpose",
inManagedObjectContext: context) as PlayerPurpose;
// Later in the code, we set the value to nil (or we could have replaced
// it with another call to insertNewObjectForEntityForName)
player.purpose = nil;
// What happens to the previous playerPurpose object within the Managed Object Context?
我的問題:發生什麼事到原來playerPurpose對象時,它在數據的唯一參考值設爲零(或與其他物體代替)託管對象內部?
這與關係刪除規則沒有什麼關係,因爲我沒有明確刪除任何對象 - 我將它從任何有意義的關係中刪除,使其成爲孤兒。
從ARC的角度來看(如果PlayerPurpose只是一個普通的非託管對象),原始的PlayerPurpose實例現在沒有引用,所以它可以從內存中清除 - 但是託管對象上下文會發生什麼? CoreData會將此識別爲孤立對象並通過上下文將其刪除嗎?
如果不是,那麼我假設我必須小心刪除通過上下文創建的任何託管對象,如果我要擺脫對它的所有引用。假設情況是這樣,是否有一個好的模式用於確保孤立的對象從NSManagedObjectContext中清除,並且它們不再存儲在持久性存儲中?
謝謝!
感謝您的回答。它證實了我的懷疑。 – FTLPhysicsGuy