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

相关问题