Я пытаюсь реализовать вырезать, копировать, вставить в моем приложении.Элементы, которые я хотел бы сохранить на UIPasteboard, являются подклассами NSManagedObject.
Я следовал за этот ответ , и это было здорово, пока мне не пришлось копировать отношения.Я начал с self.entity.attributesByName.allKeys
for (NSString *theKey in self.entity.attributesByName.allKeys) {
id theValue = [self valueForKey:theKey];
if (theValue) {
[screenCDElementDict setObject:theValue forKey:theKey];
}
}
Затем добавил self.entity.relationshipsByName.allKeys
for (NSString *theKey in self.entity.relationshipsByName.allKeys) {
id theValue = [self valueForKey:theKey];
if (theValue) {
[screenCDElementDict setObject:theValue forKey:theKey];
}
Затем закончил с использованием self.entity.propertiesByName.allKeys
for (NSString *theKey in self.entity.propertiesByName.allKeys) {
id theValue = [self valueForKey:theKey];
if (theValue) {
[screenCDElementDict setObject:theValue forKey:theKey];
}
}
Когда я архивирую screenCDElementDict
с утверждением
[archiver encodeObject:screenCDElementDict forKey: @"TheObject"];
Я получаю сообщение об ошибке:
-[MyNSManagesObjectRelation encodeWithCoder:]: unrecognized selector sent to instance 0x72db3d0
Похоже, что он пытается сделать копиюсущность отношения, а не указатель отношения к сущности.
Я не хочу копировать сам фактический объект отношения, только указатель на него.Поэтому, когда я вставляю новый элемент, я создаю новый NSManagesObject и затем могу ссылаться на ссылочные объекты из исходного NSManagedObject на новый NSManagedObject.
Похоже, что вся причина копирования всех атрибутов и отношений вручную заключалась в том, что encodeWithCoder и управляемые объекты не воспроизводятся красиво.
Даже в ответе, в котором упоминается необходимость вызова [super initWithEntity:insertIntoManagedObjectContext:]
, ничего не говорится о копировании указателя на отношения для объекта.
Я мог бы также создать свой архив для каждого объекта отношения NSManagedObject,хотя, когда я создаю нового Мастера, я не буду ссылаться на существующую сущность отношений, но буду создавать новую ...
Спасибо, Скотт <- </p>