2013-10-03 45 views
0

我在NSData格式,圖像的圖像與其他屬性一起大小包含圖像的字典。我怎麼能寫NSDictionaryNSPasteboard寫的NSDictionary到NSPasteboard

我寫的代碼如下:

NSPasteboard *pasteBoard = [NSPasteboard generalPasteboard]; 
[pasteBoard clearContents]; 
[pasteBoard writeObjects:[NSArray arrayWithObject:myDictionary]; 

編譯之後,它拋出在控制檯以下消息:的class __NSDictionaryM

實例無效NSPasteboard -writeObjects:class __NSDictionaryM不執行NSPasteboardWriting協議。

回答

1

的對象應實現協議NSPasteboardWriting被保存在剪貼板服務器。

可可框架類NSStringNSAttributedStringNSURLNSColorNSSoundNSImageNSPasteboardItem實現此協議。您可以使自定義類符合此協議,以便您可以使用NSPasteboard的writeObjects:方法將該類的實例寫入粘貼板。

爲什麼不能做這樣的:

NSImage *image = ...; 
NSArray *array = [NSArray arrayWithObject:image]; 
NSPasteboard *pasteBoard = [NSPasteboard generalPasteboard]; 
[pasteBoard writeObjects:array]; 
0

要麼讓自己的類與此數據並實現NSPasteboardWriting(可能NSPasteboardReading太多,因爲你會想從您的自定義格式紙板讀出這些數據,以及,因爲沒有其他應用程序會理解它),或使用setPropertyList:forType:propertyList:forType:

+0

我覺得你說的,我可以使用的plist的。我可以寫plist到NSPasteboard嗎? –

+0

「屬性列表」是指屬性列表類型。屬性列表類型是數組,字典,日期,數字,字符串和數據。如果只涉及屬性列表類型,您可以使用它。由於您使用的是具有數據值的字典(可以),這取決於您如何存儲大小。如果你正在使用一個大小的NSValue,你需要使用兩個NSNumbers或一個NSString(使用'NSSizeFromString'和'NSStringFromSize')。 – Jesper