将NSDictionary写入NSPasteboard

时间:2013-10-03 07:57:20

标签: objective-c macos cocoa nsdictionary nspasteboard

我有一个字典,其中包含NSData格式的图像,图像的大小以及图像的其他属性。如何将NSDictionary写入NSPasteboard

我编写的代码如下:

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

编译后,它会在控制台中抛出以下消息:

class __NSDictionaryM的实例对NSPasteboard -writeObjects:无效。 class __NSDictionaryM未实施NSPasteboardWriting协议。

2 个答案:

答案 0 :(得分:1)

对象应该实现要保存在pasteBoard服务器中的协议NSPasteboardWriting

Cocoa框架类NSStringNSAttributedStringNSURLNSColorNSSoundNSImageNSPasteboardItem实现这个协议。您可以使自定义类符合此协议,以便您可以使用NSPasteboard的writeObjects:方法将类的实例写入粘贴板。

为什么不这样做:

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

答案 1 :(得分:0)

使用此数据创建自己的类并实现NSPasteboardWriting(也可能NSPasteboardReading,因为您也希望从自定义粘贴板格式中读取此数据,因为没有其他应用程序会了解它,或使用setPropertyList:forType:propertyList:forType: