2010-04-05 9 views
6

Nuovo di zecca per Cocoa e sto cercando di capire come copiare una NSAttributedString nel tavolo di montaggio. Ho esaminato i documenti e non sono sicuro se dovrei usare un NSPasteboardItem o meno.Copia NSAttributoStringa in cartoncino

Ecco quello che ho da copiare un NSString regolare:

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

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

Come faccio a impostare un NSAttributedString?

Grazie

+1

Per l'equivalente iOS, guarda questa domanda: http://stackoverflow.com/questions/12601039/copy-nsattributedstring-in-uipasteboard – Guillaume

risposta

5

Volete sia NSRTFPboardType o NSRTFDPboardType insieme del NSAttributedString RTFFromRange:documentAttributes:/RTFDFromRange:documentAttributes: e setData sul tavolo di montaggio.

8

Come di Snow Leopard, NSAttributedString (se alimentato da AppKit) è conforme alle NSPasteboardWriting, in modo da poter semplicemente fare questo:

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

Potete send NSArray an arrayWithObject: message se si dispone di una sola corda attribuito si vuole mettere su il cartone.

[Modifica dell'anno 2013: Oppure utilizzare la nuova sintetica @[ myAttributedString ] sintassi. Funziona per qualsiasi numero di oggetti, anche se devono ancora essere conformi a NSPasteboardWriting in questo contesto.]

Questo vale anche per NSString. Cerca le intestazioni di AppKit per "NSPasteboardWriting" per trovare tutte le classi Cocoa standard che lo supportano.

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]];