我有以下方法来打开文档。
- (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
之前没有加载文档及其视图,所以我无法设置文本视图的内容,因为它尚未加载。有没有人知道这方面的工作?
提前致谢
答案 0 :(得分:3)
Cocoa遵循模型 - 视图 - 控制器(MVC)设计模式。你应该阅读in the conceptual documentation。
请勿将您的模型信息存储在视图中。也就是说,您的文档对象应该保存已加载文件的内容(在实例变量中)。稍后,当 如果调用 -windowControllerDidLoadNib(表示已为文档加载文档UI的副本),则可以使用文件内容更新视图。
NSDocument的方法非常有用,因为在许多情况下您可能希望实例化文档而不是其UI(想想脚本,导入,Spotlight导入器查询,即时打印......)。