NSTextView不接收字符串

时间:2012-09-09 15:12:24

标签: macos cocoa

我正在编写基本的文本编辑器,需要实现一种阅读方法。由于我使用的是NSDocument,因此我决定覆盖方法- (BOOL)readFromData:(NSData *)data ofType:(NSString *)typeName error:(NSError **)outError

以下是该方法的代码:

- (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 个答案:

答案 0 :(得分:1)

我找到了答案。连接没有问题。在我使用

读取文件后会发生什么
- (BOOL)readFromData:(NSData *)data ofType:(NSString *)typeName error:(NSError **)outError  

然后我应该将setString:添加到

中的textView对象
- (void)windowControllerDidLoadNib:(NSWindowController *)aController

我需要保存从另一个NSString ivar中的文件读取的字符串,以便可以将其传递给windowControllerDidLoadNib方法。

我之前做错的是我的setString:在打开并读取文件方法的同一方法中,这是在windowController加载nib文件之前。因此,textView在此之前不存在。