2013-04-08 76 views
1

我很難獲取複製/粘貼以處理我的自定義管理對象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的很好回答)以及蘋果文檔,仍然讓我難以置信。

+0

我已經發現我的代碼有一個問題;我應該在NSPasteboardReadingAsString處設置'readingOptionsForType:'。不過,我想知道這是否是處理objectID「簡單」複製​​的最簡單方法。 – markjs 2013-04-08 13:52:12

+0

具體問題:上述方法可以在'initWithPasteboardPropertyList:'中獲得ObjectID,但我需要返回一個Person對象。不幸的是,我還沒有一個託管對象的上下文。是什麼賦予了? – markjs 2013-04-08 14:43:20

+0

你有沒有得到一個解決方案來重新水化你的管理對象從粘貼板? – 2013-12-05 03:10:44

回答

0

您是否已經看到: Using Managed Objects

我不確定你的意思是'我需要返回一個Person對象,但我沒有managed object context'。你的上下文是你的便箋來創造的東西。

+0

我有,謝謝。託管對象上下文尚不可用,因爲(我猜)這個Person對象是通過NSPasteboardReading協議創建的。它尚未初始化。每個其他'Person'確實有一個託管對象上下文。 – markjs 2013-04-09 12:56:40

相關問題