2014-12-09 3 views
0

Я заметил, что ошибка для отношения «один к одному» срабатывает сразу же после выполнения запроса на выборку, даже если я не получаю доступа к этой связи. В частности, точка останова в методе newValueForRelationship:forObjectWithID:withContext:error: сразу же попадает в подкласс NSIncrementalStore.Ошибка NSIncrementalStore to-one немедленно срабатывает (загружается?)

- (id)newValueForRelationship:(NSRelationshipDescription *)relationship 
      forObjectWithID:(NSManagedObjectID *)objectID 
       withContext:(NSManagedObjectContext *)context 
        error:(NSError **)error 

https://developer.apple.com/library/mac/documentation/CoreData/Reference/NSIncrementalStore_Class/index.html#//apple_ref/occ/instm/NSIncrementalStore/newValueForRelationship:forObjectWithID:withContext:error:

Точка останова только хит, когда я достигаю отношения, как ожидается, для ко-многим, как и ожидалось (ленивый загружен).

Может кто-нибудь помочь?

ответ

0

Это все о разработке собственного NSIncrementalStore. Просьба дополнить документ Incremental Store Programming Guide.

Вот выдержки из руководства:

If the backing data store makes to-one relationships readily available, your incremental store returns to-one relationships in newValuesForObjectWithID:withContext:error:. If your app and data store are more efficient when all relationship fetching is deferred, your store may instead return them in newValuesForRelationship:forObjectWithID:withContext:error:.

+0

Я понимаю, что, но я не знаю, как это отвечает на мой вопрос. – pshah

+0

Попробуйте установить контрольную точку в newValuesForObjectWithID: и посмотрите, попал ли он для одного и того же отношения, надеюсь, вы получите ответ. –

+0

Эта точка останова попадает для каждого объекта, даже если отношения не доступны. Это мое понимание. И я могу проверить, что это поведение. – pshah