0

我有類A(NSManagedObject的子類)的引用計數,還有在我的模型AB之間沒有任何關係,我只想讓A保留對B對象的引用,而他(A)還活着。
(當我第一次從數據庫中獲取對象A,他B屬性爲null)有<code>B</code>類的屬性(也子類NSManagedObject的),屬性是<code>@synthesize</code>不<code>@dynamic</code>管理對象

我重寫B屬性getter,所以當第一次叫他從數據庫獲取B對象。

現在我需要保留B的提取結果嗎?
我想我聽說保留NSManagedObjectContext管理的對象不是一個好主意。

回答

2

保留NSManagedObject沒有問題 - 繼續做吧。唯一需要注意的是如果你堅持一個對象並且被刪除。然後你有一個對象的引用,但是如果你嘗試讀取或設置它的任何值,你會得到一個異常。因爲更新非常棘手,所以當您使用Core Data關係時,Core Data會爲您刪除傳播。

所以,如上所述:使用關係。在A和B之間建立多重關係沒有任何問題。您只需要有相應的反向關係。

例如,你可以這樣做:

Person 
    favoriteBook (to-1, inverse is favoriteByPersons) 
    authoredBooks (to-many, inverse is authors) 

Book 
    authors (to-many, inverse is authoredBooks) 
    favoriteByPersons (to-many, inverse is favoriteBook) 

讓核心數據爲你做繁重。關係管理是Core Data真正擅長的事情之一。不要試圖自己複製。

+0

謝謝:)我不知道我可以有兩個關係到同一個實體。 – Eyal

0

您應該明確地與A和B之間的關係建立一對一的。這是Core Data設置爲您管理的內容。它更簡單,更強大,並且您不必擔心內存問題。

+0

問題是我已經有A和B之間的多對多關係,所以我不能有另一個.. – Eyal

+0

你在你的問題中寫道:「A'和'B''之間沒有關係。那麼現在是什麼?請編輯問題並明確指出要完成的內容。 – Mundi

相關問題