macOS 학습 노트(8) 간단명료한 텍스트 편집기

2533 단어 MacOS
코드에 직접 부착:
#import 

@interface MyDocument : NSDocument
{
	IBOutlet NSTextView *textView;
	NSAttributedString * rtfData;// 
}
@end
#import "MyDocument.h"

@implementation MyDocument

- (id)init
{
    self = [super init];
    if (self) {
    
        // Add your subclass-specific initialization here.
        // If an error occurs here, send a [self release] message and return nil.
    
    }
    return self;
}

- (NSString *)windowNibName
{
    // Override returning the nib file name of the document
    // If you need to use a subclass of NSWindowController or if your document supports multiple NSWindowControllers, you should remove this method and override -makeWindowControllers instead.
    return @"MyDocument";
}

- (void)windowControllerDidLoadNib:(NSWindowController *) aController
{
    [super windowControllerDidLoadNib:aController];
    // Add any code here that needs to be executed once the windowController has loaded the document's window.

	if(rtfData){
		[[textView textStorage] replaceCharactersInRange:NSMakeRange(0, [[textView string] length]) withAttributedString:rtfData];
		[rtfData release];
	}
	[textView setAllowsUndo:YES];
}

-(Boolean)readFromFileWrapper:(NSFileWrapper *)fileWrapper ofType:(NSString *)typeName error:(NSError **)outError
{
	rtfData=[[NSAttributedString alloc] initWithRTF:[wrapper regularFileContents] documentAttributes:nil];
	if(textView){
		[[textView textStorage] replaceCharactersInRange:NSMakeRange(0, [[textView string] length]) withAttributedString:rtfData];
		[rtfData release];
	}
	return YES;
}
-(NSFileWrapper*)fileWrapperOfType:(NSString *)typeName error:(NSError **)outError
{
	NSRange range=NSMakeRange(0, [[textView string] length]);
	NSFileWrapper * wrapper=[[NSFileWrapper alloc] initRegularFileWithContents:[textView RTFFromRange:range]];
	return [wrapper autorelease];
}
@end


### 기본 개념 검토
텍스트 기반 프로세싱 프로그램은 일반적으로 다음 네 가지 기능을 가진 하나의 텍스트에 해당하는 여러 개의 NSDocument 객체를 제어하는 NSDocument Controller 객체의 인스턴스로 설명됩니다.
  • 프로그램 기타 대상에 대한 문서 데이터 표현
  • 내부 데이터 구조에 데이터를 마운트하여 창에 표시
  • 문서 데이터를 파일에 저장
  • 문서 데이터를 읽고 NSDocument에서 NSWindow Controller 제어 뷰를 제어합니다.

  • 일반 텍스트 편집기의 차이점을 비교하여 통일적으로 해석하다.readFromData 방법으로 파일 시스템에서 NSData 6. 읽기Data OfType으로 NSData를 NSString 7.windowControllerDidLoadNib 텍스트 데이터를 텍스트 보기에 불러오기
    풍부한 텍스트 편집기: 8.readFromFileWrapper 폴더에서 데이터 읽기 9.fileWrapperOfType을 사용하면 문서에 풍부한 텍스트 내용을 저장할 수 있습니다.windowControllerDidLoadNib 마운트 보기

    좋은 웹페이지 즐겨찾기