2010-04-05 140 views
6

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

这是我必须复制正规的NSString:

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

[pb setString:@"asdfasdf" forType:NSStringPboardType]; 

如何设置一个NSAttributedString?

感谢

+1

对于iOS等价物,请看这个问题:http://stackoverflow.com/questions/12601039/copy-nsattributedstring-in-uipasteboard – Guillaume 2012-09-27 09:50:49

回答

5

你想要么NSRTFPboardType或NSRTFDPboardType沿NSAttributedString的RTFFromRange:documentAttributes:/RTFDFromRange:documentAttributes:setData粘贴板上。

8

雪豹,NSAttributedString(在按了AppKit电)符合NSPasteboardWriting,所以你可以简单地这样做的:

[pb clearContents]; 
[pb writeObjects:arrayOfAttributedStrings]; 

您可以send NSArray an arrayWithObject: message如果你只有一个属性串要穿上纸板。

[从2013年开始编辑:或使用闪亮的新@[ myAttributedString ]语法。适用于任意数量的对象,但它们仍然需要在此上下文中全部符合NSPasteboardWriting。]

这也适用于NSString。在AppKit头文件中搜索“NSPasteboardWriting”以查找所有支持它的标准Cocoa类。

1
NSPasteboard *paste = [NSPasteboard generalPasteboard]; 
[paste clearContents];  
[paste declareTypes:[NSArray arrayWithObject:NSStringPboardType] owner:nil]; 
NSMutableAttributedString *aString;// init some string 
BOOL success = [paste writeObjects:[NSArray arrayWithObject:aString]];