我有类A
(NSManagedObject的子类),它具有类B
的属性(也是NSManagedObject的子类),属性为@synthesize
而不是@dynamic
,那里在我的模型中,A
和B
之间没有任何关系,我只希望A
保留对B
对象的引用,而他(A
)是活着。
(当我第一次从db获取对象A
时,他的B
属性为空)
我覆盖B
属性getter,所以在第一次调用时,他将从db中获取B
对象。
现在我需要保留B
的获取结果吗?
我想我听说保留NSManagedObjectContext管理的对象不是一个好主意。
答案 0 :(得分:2)
保留NSManagedObject
没有问题 - 继续这样做。唯一需要注意的是,如果你抓住一个对象并且它被删除了。然后你有一个对象的引用,但如果你试图读取或设置它的任何值,你将得到一个例外。因为更新很棘手,所以当您使用核心数据关系时,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为您做繁重的工作。关系管理是Core Data真正擅长的事情之一。不要试图自己复制。
答案 1 :(得分:0)
您应明确选择A和B之间的一对一关系。这就是为您设置Core Data的原因。它更简单,更强大,您不必担心内存问题。