用Cocoa打开文档

时间:2010-11-17 22:30:57

标签: cocoa nstextview nsdocument

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

- (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之前没有加载文档及其视图,所以我无法设置文本视图的内容,因为它尚未加载。有没有人知道这方面的工作?

提前致谢

1 个答案:

答案 0 :(得分:3)

Cocoa遵循模型 - 视图 - 控制器(MVC)设计模式。你应该阅读in the conceptual documentation

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

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