【问题标题】:NSTextView does not receive stringNSTextView 没有收到字符串
【发布时间】:2012-09-09 15:12:23
【问题描述】:

我正在编写一个基本的文本编辑器,需要实现一个阅读方法。由于我使用的是 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)。

我希望有人能启发我,因为我真的不明白为什么它不起作用。请指出正确的方向,或至少一些提示。谢谢。

【问题讨论】:

    标签: macos cocoa


    【解决方案1】:

    我找到了答案。连接没有问题。发生了什么是在我使用读取文件后

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

    然后我应该 setString: 到 textView 中的对象

    - (void)windowControllerDidLoadNib:(NSWindowController *)aController
    

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

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

    【讨论】:

      猜你喜欢
      • 2017-01-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多