NSManagedObjectContext objectWithID生命周期方法(派生的属性)

问题描述 投票:0回答:3

我有一个带有过渡属性的NSManagedObject子类,该属性基本上是对多个持久关系之一的重新格式化。我通过观察与KVO的关系并在-awakeFromFetch-awakeFromInsert等中注册观察者来做到这一点。

这一切都很好,但是,如果我使用对象的objectID-objectWithID:技术在线程之间传递对象,则没有生命周期方法可以挂接瞬态属性的生成。实际上,没有一个生命周期方法被触发,因为使用id直接访问该对象不被认为是访存。

有很多解决方法,但是最好使用基于生命周期的技术。我可能想念什么吗?我可以使用另一种标准方法吗?

谢谢

编辑:示范项目https://mega.co.nz/#!UsNBTZ7S!UU1qaFuc4W6Z2EYey-9AiMyfM8203Zfrm1lfpG5QITU

我有一个带有暂态属性的NSManagedObject子类,该属性基本上是对多个持久性关系之一的重新格式化。我通过观察与KVO和...

multithreading core-data nsmanagedobject nsmanagedobjectcontext
3个回答
0
投票

[当您在具有上下文的一个线程上具有NSManagedObject实例,然后从其他线程和不同的上下文中检索它时,将触发-awakeFromFetch-awakeFromInsert


0
投票

[好,所以回答我自己的问题,是由于objectWithID:总是返回一个对象,即使该对象未在接收者管理的对象上下文中注册,也引起了该问题。在某些情况下,objectRegisteredForID:似乎提供更多信息。无论如何,结论是生命周期方法可以触发,但是要小心objectWithID:,因为它可能导致对象不一致。


0
投票
我遇到了同样的问题,并通过在NSManagedObjectContext上创建了一个通过常规获取路径的扩展来解决,因此触发了所有预期的生命周期方法:
© www.soinside.com 2019 - 2024. All rights reserved.