У меня странное поведение existingObjectWithID:error:
У меня есть контекст с родительским контекстом.«Время от времени» вызов existingObjectWithID:error:
в дочернем контексте возвращает ошибку 133000, когда я знаю (и зарегистрировался, см. Ниже), что требуемый объект присутствует в родительском контексте.
Когда яскажем "время от времени", что никогда не происходит в последнем созданном NSManagedObject, но всегда во всех остальных (я создаю их в дочернем контексте и сохраняю их в родительском контексте).
Я ожидаю existingObjectWithID:error:
чтобы всегда получать объект из родительского хранилища.Что не так?
Какой-то код, который иллюстрирует то, что я говорю:
- (NSManagedObject*) backgroundObjectFromMainObject:(NSManagedObject*)object
{
NSError *error = nil ;
NSManagedObjectID *oid = [object objectID] ;
NSManagedObject *crd = [self.context existingObjectWithID:oid
error:&error] ;
[error logDetailsOfError] ;
if (error)
{
NSLog(@"Registered in master : %@",[self.context.parentContext registeredObjects]) ;
}
return crd ;
}
Получает следующий журнал:
2019-05-12 16:52:43.607563+0200 MyOwnNotes[75836:10752916] Error domain: NSCocoaErrorDomain code: 133000
2019-05-12 16:52:43.609641+0200 MyOwnNotes[75836:10752916] Tentative d’accès à un objet introuvable en magasin. <= THAT MEANS "Try to access unstored object"
2019-05-12 16:52:43.609737+0200 MyOwnNotes[75836:10752916] objectID => 0x600000250380 <x-coredata:///NotesHierarchyElement/t60559E22-AFA4-4E1A-8832-E5CF620A9D244>
2019-05-12 16:52:43.609953+0200 MyOwnNotes[75836:10752916] Registered in master : {(
<NotesHierarchyElement: 0x600002118f00> (entity: NotesHierarchyElement; id: 0x600000250380 <x-coredata:///NotesHierarchyElement/t60559E22-AFA4-4E1A-8832-E5CF620A9D244> ; data: {
father = nil;
sons = (
);
title = "16:52:35";
url = nil;
}),
<NotesHierarchyElement: 0x6000021043c0> (entity: NotesHierarchyElement; id: 0x6000002502e0 <x-coredata:///NotesHierarchyElement/t60559E22-AFA4-4E1A-8832-E5CF620A9D246> ; data: {
father = nil;
sons = (
);
title = "16:52:41";
url = nil;
})
)}
Вы можете ясно видеть этот объект с помощью objectId x-coredata:///NotesHierarchyElement/t60559E22-AFA4-4E1A-8832-E5CF620A9D244
присутствует в родительском хранилище через журнал зарегистрированных объектов (это второй (самый старый, я мог бы получить самый новый без проблем)).