У меня есть объект, который имеет атрибуты objectId
и objectName
. После того как я удалил элемент из функции deleteObject
Core Data и сохранил контекст, значение объекта равно null, хотя я использовал объект только для предиката. Вот мой код.Значение Undeleted object равно null после контекста сохранения основных данных
NSLog(@"%@", self.theObject.name); // it returns the object's name
NSError *error = nil;
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] initWithEntityName:@"MyEntity"];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"objectId==%@", self.theObject.objectId];
fetchRequest.predicate = predicate;
NSArray *myObjects = [context executeFetchRequest:fetchRequest error:&error];
for (MyClass *myObject in myObjects) {
[context deleteObject:myObject];
}
if (![context save:&error]) {
NSLog(@"Could not delete! %@ %@", error, [error localizedDescription]);
} else {
NSLog(@"%@", self.theObject.name); // it returns null
}
Является ли это поведением Core Data по умолчанию или я что-то пропустил? Почему значение theObject
имеет значение null, когда я использовал его только для предиката?
Редактировать основанный на комментарий
theObject
устанавливается от контроллера представления родительского внутри prepareForSegue
метода.
destinationViewController.theObject = self.theObjectsArray[indexPath.row];
Я вошел theObject
значение в viewDidLoad
и он был установлен успешно.
похоже, что вы удаляете объект в своем контексте, у которого есть идентификатор объекта ..., который должен быть объектом ...?! – Volker
@Volker Я просто использовал идентификатор объекта для предиката и заполнил массив myObjects запросом. Я удалил только myObject (это MyClass), но значение объекта Object равно null после сохранения контекста. Это так запутанно. Постскриптум myObject и theObject - это разные классы. –
поэтому, если объект Object показывает null, должна быть какая-то причина, это не происходит волшебным образом. Возможно, вы дадите более подробную информацию о том, как вы создаете объект. Используя его в предикате, его значения не будут сбрасываться в NULL. – Volker