4

我有一個NSTextView,它可能包含富文本或富文本圖像NSTextAttachment。還有就是我如何添加附件:將帶有NSTextAttachment的NSAttributedString保存到文件中。如何?

NSImage *image = [NSImage imageNamed:@"image"]; 

NSTextAttachmentCell *attachmentCell =[[NSTextAttachmentCell alloc] initImageCell:image]; 
NSTextAttachment *attachment =[[NSTextAttachment alloc] init]; 
[attachment setAttachmentCell: attachmentCell ]; 
NSAttributedString *attributedString =[NSAttributedString attributedStringWithAttachment: attachment]; 
[[aTextView textStorage] beginEditing]; 
if ([aTextView shouldChangeTextInRange:NSMakeRange([aTextView selectedRange].location, 0) replacementString:@""]) { 
    [[aTextView textStorage] insertAttributedString:attributedString atIndex:[aTextView selectedRange].location]; 
    [aTextView didChangeText]; 
} 
[[aTextView textStorage] endEditing]; 

-fileWrapperOfType:error:方法:

- (NSFileWrapper *)fileWrapperOfType:(NSString *)typeName error:(NSError *__autoreleasing *)outError 
{ 
    NSRange documentRange = NSMakeRange(0, [[[WindowController aTextView] textStorage] length]); 
    NSTextStorage *text = [[WindowController aTextView] textStorage]; 

    NSFileWrapper *resultWrapper = nil; 
    if ([typeName compare:@"public.rtf"] == NSOrderedSame) { 
     resultWrapper = [[NSFileWrapper alloc] initRegularFileWithContents:[text RTFFromRange:documentRange documentAttributes:[NSDictionary dictionaryWithObjectsAndKeys:NSRTFTextDocumentType, NSDocumentTypeDocumentAttribute, nil]]]; 
    } 
    else if ([typeName compare:@"com.apple.rtfd"] == NSOrderedSame) { 
     resultWrapper = [text RTFDFileWrapperFromRange:documentRange documentAttributes:[NSDictionary dictionaryWithObjectsAndKeys:NSRTFDTextDocumentType, NSDocumentTypeDocumentAttribute, nil]]; 
    } 
    return resultWrapper; 
} 

但是當我節省RTFD,所有附件鬆動。請幫忙。我錯過了什麼?

回答

相關問題