First Core Data не имеет понятия изменчивых и неизменных объектов. Вы всегда можете изменить объект (в пределах ограничений модели данных).
Во-вторых, мы должны различать в памяти копию и копию в базе данных . Копия в памяти, по существу, будет делать memncpy
байтов от адреса памяти A до адреса памяти B. Это, по сути, то, что copy
и mutableCopy
предоставляют нам в Objective-C. Копия в базе данных создаст копию существующей строки. Важное различие между этими типами копий заключается в том, что первый не создает дубликат в базе данных.
Короче говоря, вы не можете делать в памяти копии NSManagedObjects. NSManagedObject
(в данном случае Business) - это строка в базе данных. В результате, если copy
и mutableCopy
работают на NSManagedObjects
, это создаст несколько объектов, ссылающихся на одну и ту же строку в базе данных из одного и того же NSManagedObjectContext
. Это не имеет большого смысла и создаст больше проблем, чем решит. Например, если у вас было две копии NSManagedObject, и вы изменили имя на @"Bar"
для первого и @"Foo"
для второго. А затем позвоните save
на ваш NSManagedObjectContext
, значение которого будет записано @"Foo"
или @"Bar"
?
Чтобы создать копию в базе данных , вам нужно будет создать новый экземпляр Business, скопировать все свойства и связи и сохранить новый объект.