我有一个字典,其中包含NSData
格式的图像,图像的大小以及图像的其他属性。如何将NSDictionary
写入NSPasteboard
?
我编写的代码如下:
NSPasteboard *pasteBoard = [NSPasteboard generalPasteboard];
[pasteBoard clearContents];
[pasteBoard writeObjects:[NSArray arrayWithObject:myDictionary];
编译后,它会在控制台中抛出以下消息:
class __NSDictionaryM
的实例对NSPasteboard -writeObjects:
无效。 class __NSDictionaryM
未实施NSPasteboardWriting
协议。
答案 0 :(得分:1)
对象应该实现要保存在pasteBoard服务器中的协议NSPasteboardWriting
。
Cocoa框架类NSString
,NSAttributedString
,NSURL
,NSColor
,NSSound
,NSImage
和NSPasteboardItem
实现这个协议。您可以使自定义类符合此协议,以便您可以使用NSPasteboard的writeObjects:方法将类的实例写入粘贴板。
为什么不这样做:
NSImage *image = ...;
NSArray *array = [NSArray arrayWithObject:image];
NSPasteboard *pasteBoard = [NSPasteboard generalPasteboard];
[pasteBoard writeObjects:array];
答案 1 :(得分:0)
使用此数据创建自己的类并实现NSPasteboardWriting
(也可能NSPasteboardReading
,因为您也希望从自定义粘贴板格式中读取此数据,因为没有其他应用程序会了解它,或使用setPropertyList:forType:
和propertyList:forType:
。