2012-09-09 70 views
2

我在寫一個基本的文本編輯器,需要實現一個閱讀方法。由於我使用NSDocument,我決定要覆蓋的方法- (BOOL)readFromData:(NSData *)data ofType:(NSString *)typeName error:(NSError **)outErrorNSTextView沒有收到字符串

下面是我的方法的代碼:

- (BOOL)readFromData:(NSData *)data ofType:(NSString *)typeName error:(NSError **)outError 
{ 
    BOOL readSuccess = NO; 
    NSString *fileContents = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; 

    if (!fileContents && outError) { 
    *outError = [NSError errorWithDomain:NSCocoaErrorDomain code:NSFileReadUnknownError userInfo:nil]; 
    } 

    if (fileContents) { 
    readSuccess = YES; 

    [textView setString: fileContents]; 
    NSLog(@"%@",[textView string]); 
    } 
    return YES; 
} 

NSLog返回null。我已將xib中的textView對象連接到textView屬性文件的所有者(這是NSDocument子類)。 我的代碼有什麼問題?

我的源文件只是NSDocument子類接口和實現文件(GNDocument.h和.m)。我有兩個xib文件:MainMenu.xib和GNDocument.xib(文件所有者設置爲GNDocument)。我能夠NSLog字符串到控制檯。唯一的問題似乎是NSTextView沒有連接到文件的所有者,即使我已經完成了連接(從文件所有者的textView屬性拖到NSTextView)。

我希望有人能夠啓發我,因爲我真的不明白爲什麼它不起作用。請指出我正確的方向,或至少一些提示。謝謝。

回答

1

我找到了答案。連接沒有問題。什麼情況是,我讀使用

- (BOOL)readFromData:(NSData *)data ofType:(NSString *)typeName error:(NSError **)outError 

我應該那麼的SetString文件後:在

- (void)windowControllerDidLoadNib:(NSWindowController *)aController 

到TextView的對象我需要認爲,從文件中的另一讀取字符串NSString ivar,以便它可以傳遞給windowControllerDidLoadNib方法。

我以前做錯了什麼是我setString:在打開和讀取文件方法,這是在windowController加載nib文件之前相同的方法。因此textView在此之前不存在。