Я не могу получить доступ к вновь сохраненному объекту, используя objectID.
Я создал дочерний контекст управляемого объекта (cmoc) из моего managedContext и создал новый объект внутри этого cmoc.После того как я ввел переменные в новый объект, я вызвал save () для дочернего контекста, сохранил в родительском контексте, а затем попытался загрузить объект в родительском контексте (и при моих попытках в другом фоновом контексте)используя objectID.Это не удалось, и я не знаю, почему.
Я гарантировал, что сохранение происходит до попытки вернуть объект в новом контексте, и это не помогло.Я убедился, что сохраняю правильный cmoc и родительский контекст.Я немного растерялся.
Чтобы создать childContext, экземпляр объекта person (типа Person) и перейти к следующему vc (destVC):
let childContext = NSManagedObjectContext(concurrencyType: .mainQueueConcurrencyType)
childContext.parent = coreDataStack.managedContext
let person = Person(context: childContext)
destVC.coreDataStack = coreDataStack
destVC.person = person
destVC.childContext = childContext
Затем переменныедобавлен в экземпляр лица
person.cellPhone = ... [etc]
Я подозреваю, что моя проблема в коде сохранения, который в настоящее время гласит:
guard childContext.hasChanges else {
return
}
do {
try self.newKeyNumberContext.save()
} catch let error as NSError {
[Manage error]
}
coreDataStack.saveContext()
Или в коде сразу после этого:
let personObjectID = self.person.objectID //(does return an objectID)
let personToReturn = try? coreDataStack.managedContext.existingObject(with: personObjectID)
, который не возвращает объект, вместо него возвращается nil.