#objective_c #coredata
Существует некий NSManagedObject-подкласс Visit. Появилась необходимость получить
почти точную копию обьекта - из двадцати полей нужно изменить значение у трех. Можно
ли сделать копию не таким трудоемким процессом как
....
for(Visit *copiedVisit in arrayOfVisits) // массив обьектов с которых делаются копии
{
Visit *newVisit = (Visit *)[NSEntityDescription insertNewObjectForEntityForName:@"Visit"
inManagedObjectContext:[self managedObjectContext]];
newVisit.date = [NSDate someNewDate]; // поле которое нужно изменить
newVisit.name = copiedVisit.name; // далее переприсвоение значений полей
одного объекта = полям другого
newVisit.attribute = copiedVisit.attribute;
newVisit.time = copiedVisit.time;
...
NSError *err = nil;
if (![self managedObjectContext] save:&err])
{
...
};
}
а потом переприсвоением значений полей одного объекта полям другого? Некий аналог
copy для NSManagedObject-подкласса?
Ответы
Ответ 1
Насколько мне известно, у Core Data нет такой возможности из коробки. Мне кажется, вполне уместно определить для вашего класса Visit соответствующий метод -copyWithZone: в котором можно описать всю процедуру порождения копии, и затем пользоваться просто обычным copy, как вы и предполагаете в своем вопросе - только не "аналогом copy", а самым настоящим copy, потому что именно так он и работает - через определение copyWithZone. Смотри мой ответ про клонирование UIView: Objective C: как клонировать UIView? .
Комментариев нет:
Отправить комментарий