#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? .
Комментариев нет:
Отправить комментарий