Добавление подкласса NSManagedObject Item в UIPasteboard - вырезать, скопировать, вставить - PullRequest
1 голос
/ 07 сентября 2011

Я пытаюсь реализовать вырезать, копировать, вставить в моем приложении.Элементы, которые я хотел бы сохранить на 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>

...