将NSManagedObject Item的子类添加到UIPasteboard - 剪切,复制,粘贴

时间:2011-09-07 14:09:57

标签: nsmanagedobject nskeyedarchiver nscoding uipasteboard

我正在尝试在我的应用程序中实现剪切,复制,粘贴。我想要存储在UIPasteboard上的Items是NSManagedObject的子类。

我跟着this answer,直到我需要复制关系才很棒。我从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

所以看起来它试图制作一个relarionship实体的副本,而不是指向实体的关系指针。

我不想复制实际的关系实体本身,只是指向它的指针。 因此,当我粘贴新项时,我创建一个新的NSManagesObject,然后可以将原始NSManagedObject中引用的实体与新的NSManagedObject相关联。

似乎手动复制所有属性和关系的全部原因是因为encodeWithCoder和托管对象不能很好地播放。

即使提到必须调用[super initWithEntity:insertIntoManagedObjectContext:]的答案也没有提及复制指向实体关系的指针。

我也可以为每个关系实体NSManagedObject创建我的存档,但是当我创建新的Master时,我不会引用现有的关系实体,但会创建一个新的...

谢谢,   斯科特< -

0 个答案:

没有答案