将NSAttributedString复制到粘贴板

Chr*_*ris 7 cocoa pasteboard nsattributedstring

Cocoa的新手,我正在试图弄清楚如何将NSAttributedString复制到粘贴板.我查看了文档并且不确定我是否应该使用NSPasteboardItem.

这是我必须复制常规NSString:

NSPasteboard *pb = [NSPasteboard generalPasteboard];
NSArray *types = [NSArray arrayWithObjects:NSStringPboardType, nil];
[pb declareTypes:types owner:self];

[pb setString:@"asdfasdf" forType:NSStringPboardType];
Run Code Online (Sandbox Code Playgroud)

如何设置NSAttributedString?

谢谢

Pet*_*sey 10

从Snow Leopard开始,NSAttributedString(当由AppKit启动时)符合NSPasteboardWriting,因此您可以简单地执行此操作:

[pb clearContents];
[pb writeObjects:arrayOfAttributedStrings];
Run Code Online (Sandbox Code Playgroud)

如果您只想在粘贴板上放置一个属性字符串,则可以向NSArray发送arrayWithObject:消息.

[从2013年开始编辑:或者使用闪亮的新@[ myAttributedString ]语法.适用于任意数量的对象,尽管在这种情况下它们仍然需要符合NSPasteboardWriting.

这也适用于NSString.在AppKit标题中搜索"NSPasteboardWriting"以查找支持它的所有标准Cocoa类.


Chu*_*uck 6

您需要NSRTFPboardType或NSRTFDPboardType以及NSAttributedString的RTFFromRange:documentAttributes:/ RTFDFromRange:documentAttributes:setData粘贴板.