我很难获取复制/粘贴以处理我的自定义管理对象Person
。该对象包含属性和关系。该对象应该提供objectID。我打算实施粘贴生成一个新的对象,然后填写复制的Person
的信息。核心数据中自定义管理对象的复制/粘贴
复制objectID可能会起作用。我确定粘贴不起作用。我在Person
类中实现以下方法,在试图复制/粘贴的对象:
#pragma mark --- Copy functionality
-(id)pasteboardPropertyListForType:(NSString *)type
{
if ([type isEqualToString:@"my.company.person"])
{
NSManagedObjectID *oid = self.objectID;
NSURL *uidURL = [oid URIRepresentation];
return [uidURL absoluteString];
}
return nil;
}
-(NSArray *)writableTypesForPasteboard:(NSPasteboard *)pasteboard
{
return @[@"my.company.person"];
}
+ (NSPasteboardWritingOptions)writingOptionsForType:(NSString *)type pasteboard:(NSPasteboard *)pasteboard
{
if ([type isEqualToString:@"my.company.person"])
{
return NSPasteboardWritingPromised;
}
return nil;
}
并做粘贴:
#pragma mark --- Paste functionality
+(NSArray *)readableTypesForPasteboard:(NSPasteboard *)pasteboard
{
return @[@"my.company.person"];
}
+ (NSPasteboardReadingOptions)readingOptionsForType:(NSString *)type pasteboard:(NSPasteboard *)pasteboard
{
if ([type isEqualToString:@"my.company.person"])
{
return NSPasteboardReadingAsString;
}
return nil;
}
- (id)initWithPasteboardPropertyList:(id)propertyList ofType:(NSString *)type
{
if ([type isEqualToString:@"my.company.person"])
{
...
}
return nil;
}
我应该如何继续在这里?我无所事事,读了很多C程序Q & A(例如Peter Hosey对NSPasteboard and simple custom data的很好回答)以及苹果文档,仍然让我难以置信。
我已经发现我的代码有一个问题;我应该在NSPasteboardReadingAsString处设置'readingOptionsForType:'。不过,我想知道这是否是处理objectID“简单”复制的最简单方法。 – markjs 2013-04-08 13:52:12
具体问题:上述方法可以在'initWithPasteboardPropertyList:'中获得ObjectID,但我需要返回一个Person对象。不幸的是,我还没有一个托管对象的上下文。是什么赋予了? – markjs 2013-04-08 14:43:20
你有没有得到一个解决方案来重新水化你的管理对象从粘贴板? – 2013-12-05 03:10:44