Страницы

Поиск по вопросам

пятница, 5 июля 2019 г.

Копирование NSManagedObject-подкласса

Существует некий 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-подкласса?


Ответ

Насколько мне известно, у Core Data нет такой возможности из коробки. Мне кажется, вполне уместно определить для вашего класса Visit соответствующий метод -copyWithZone: в котором можно описать всю процедуру порождения копии, и затем пользоваться просто обычным copy, как вы и предполагаете в своем вопросе - только не "аналогом copy", а самым настоящим copy, потому что именно так он и работает - через определение copyWithZone.
Смотри мой ответ про клонирование UIView: Objective C: как клонировать UIView?

Комментариев нет:

Отправить комментарий