17

我在实体 A 和实体 B(一侧)之间存在一对一的关系,例如名为 bRel。我有NSAtomicStore(MyStore) 和NSAtomicStoreCacheNode(MyCacheNode) 的子类。在load:MyStore 的方法中,我为实体 A 和 B(aNode 和 bNode)创建 MyCacheNode 实例,并为每个实体分配相应的 propertyCache 字典。aNode 的 propertyCache 包含 key 的 bNode @"bRel"

aManagedObject 是正常创建的,并且所有属性都有效。但是当 aManagedObject 通过 访问 bManagedObject 时aManagedObject.bRel.someAttribute,bManagedObject 仍然是错误的。bManagedObject 不接收awakeFromInsertawakeFromFetch。bNode 和 bManagedObject 共享相同的managedObjectID. 当 bManagedObject 访问 someAttribute 时,bNode 是活动的。当一个ManagedObject 访问它的属性时,它会经过valueForKey:MyCacheNode 的。当 bManagedObject 这样做时,我们没有到达那里。

bManagedObject 根本不会触发。

谁能想到在这种情况下我应该检查什么?

4

2 回答 2

1

从目前的角度来看,我认为我只是没有要求willAccessValueForKey:/didAccessValueForKey:合成属性,这与自定义商店无关。B是A的综合属性,AFAIR。

于 2014-05-25T19:20:19.467 回答
1

是的。问题可能是您的托管对象上有 aRel 的前向声明。尝试在 aManagedObject.h 文件中导入它。这样,您应该能够访问它的属性。

让我知道事情的后续 :)

于 2014-05-21T05:10:24.910 回答