0

我有以下方法来打开文档。

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

[editorView setString:stringData];

if ( outError != NULL ) {
    *outError = [NSError errorWithDomain:NSOSStatusErrorDomain code:unimpErr userInfo:NULL];
}

return YES;
}

似乎文档及其视图在YES返回之前未加载,因此我无法设置文本视图的内容,因为它尚未加载。有谁知道解决这个问题的方法?

提前致谢

4

1 回答 1

3

Cocoa 遵循模型-视图-控制器 (MVC) 设计模式。您应该在概念文档中阅读它。

不要将模型信息存储在视图中。也就是说,您的文档对象应该保存已加载文件的内容(在实例变量中)。之后,什么时候 如果调用 -windowControllerDidLoadNib(表示已为文档加载了文档 UI 的副本),您可以使用文件内容更新视图。

NSDocument 的方法很有用,因为在许多情况下您可能希望实例化文档而不是其 UI(想想脚本、导入、Spotlight 导入器查询、即时打印……)。

于 2010-11-18T13:59:10.573 回答