17

Mam relację jeden-do-jednego między jednostką A i jednostką B (jednostronną), na przykład o nazwie bRel. Mam podklasy NSAtomicStore (MyStore) i NSAtomicStoreCacheNode (MyCacheNode). W metodzie MyStore load: tworzę instancje MyCacheNode dla jednostek A i B (aNode i bNode) i przypisuję odpowiedni słownik właściwościCache dla każdego z nich. Właściwość cache dla aNode zawiera bNode dla klucza @"bRel".Obiekt NSManagedObject nie może uzyskać atrybutów z NSAtomicStoreCacheNode

Obiekt aManagedObject jest tworzony normalnie i ma wszystkie właściwości prawidłowe. Ale gdy aManagedObject uzyskuje dostęp do obiektu bManagedObject poprzez aManagedObject.bRel.someAttribute, obiekt bManagedObject pozostaje uszkodzony. bManagedObject nie otrzymuje awakeFromInsert ani awakeFromFetch. Obiekty bNode i bManagedObject mają tę samą instancję co managedObjectID. BNode jest aktywny, gdy bManagedObject uzyskuje dostęp do someAttribute. Kiedy aManagedObject uzyskuje dostęp do swoich atrybutów, przechodzi przez valueForKey: z MyCacheNode. Kiedy robi to bManagedObject, nie dostaniemy się tam.

bManagedObject po prostu nigdy nie strzela.

Czy ktoś może przypuszczać, co powinienem sprawdzić w tej sytuacji?

+0

Mam problemy z łączeniem relacji podczas używania niestandardowego magazynu NSAtomicStore, czy udało Ci się uzyskać dostęp do dowolnego problemu w dowolnym miejscu? – Vamos

+0

Czy zachowuje się w ten sam sposób, jeśli uzyskujesz dostęp do relacji za pomocą zmiennej ValueForKey? – quellish

Odpowiedz

1

tak. Problem może polegać na tym, że posiadasz Deklarację Forward aRel na zarządzanym obiekcie. Spróbuj zaimportować go do pliku aManagedObject.h. w ten sposób powinieneś mieć dostęp do jego atrybutów.

Daj mi znać jak poszło :)

1

Z obecnej perspektywy myślę, że po prostu nie zadzwonił willAccessValueForKey:/didAccessValueForKey: dla syntetyzowanych właściwości, i to było bez znaczenia dla dostosowywania sklep. B był zsyntetyzowaną własnością A, AFAIR.