我很難獲取複製/粘貼以處理我的自定義管理對象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