Дублирование (копирование) основной записи данных и связанных записей - PullRequest
1 голос
/ 26 марта 2011

Я пишу приложение, которое позволяет пользователю создать «анкету», а затем добавить к ней вопросы.Я использую основные данные для хранения информации.Я создал анкетный объект и имею отношения «один ко многим» с вопросными объектами.У меня такой вопрос: хотите ли вы разрешить пользователю дублировать (копировать) всю анкету, вопросы и все, как лучше всего это сделать?

Чтобы было ясно:

У меня есть:

Запись анкеты ---> Запись вопроса 1 - Запись вопроса 2 - Запись вопроса 3

, и я хочу, чтобы пользовательбыть в состоянии продублировать это и получить следующее:

Запись анкеты ---> Запись вопроса 1 - Запись вопроса 2 - Запись вопроса 3

Запись анкеты (копия) --> Запись вопроса 1 - Запись вопроса 2 - Запись вопроса 3

Ответы [ 2 ]

1 голос
/ 26 марта 2011

Вы сказали, что хотите продублировать всю анкету, поэтому предположим, что вам нужно что-то вроде этого:

Анкета ---> Вопрос 1 - Вопрос 2 - Вопрос 3

Анкета (копия) ---> Вопрос 1 (копия) - Вопрос 2 (копия) - Вопрос 3 (копия)

Тогда вам нужна глубокая копия. Вы можете написать что-нибудь на основе этой категории NSManagedObject , при условии, что вы правильно установили правила владения отношениями в своей модели данных.

1 голос
/ 26 марта 2011

Вы просто вставляете новый управляемый объект и затем устанавливаете все его значения на то же самое, что и исходный объект. Если вы используете специализированный подкласс для своего управляемого объекта, вы можете даже написать простой вспомогательный метод (например, предполагается, что управляемый объект называется Анкета, измените соответственно):

-(Questionnaire*)copyQuestionnaire
{
  NSManagedObjectContext* ctx = [self managedObjectContext];
  // Obviously use the correct entity name...
  Questionnaire* newCopy = [NSEntityDescription insertNewObjectForEntityForName:@"Questionnaire" inManagedObjectContext:ctx];
  // Now just copy your properties, for this example we'll assume
  // a simple relationship called 'questions'
  [newCopy setQuestions:[self questions]];

  // We return a retained copy since our method name starts
  // with 'copy'
  return [newCopy retain];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...