我的第一个基于文档的应用程序遇到了一些问题。很简单: 在 myDocument.m 上我做了一些方法
- (IBAction)salva:(id)sender {
[array addObject:@"Hello"];
[nomeLabel setStringValue:@"ciao"];
NSLog(@"%@",[array objectAtIndex:0]);
}
这用于在我的数组上保存一个值
- (BOOL) writeToURL:(NSURL *)url ofType:(NSString *)typeName error:(NSError **)outError {
return [array writeToURL:url atomically:YES];
}
这用于将数组保存在文件中
- (void) imposta {
[nomeLabel setStringValue:[array objectAtIndex:0]];
NSLog(@"Ciao");
}
使用此方法,我使用数组的内容设置标签的内容
- (BOOL) readFromURL:(NSURL *)url ofType:(NSString *)type error:(NSError **)outError{
[ array release];
array = [[NSMutableArray alloc] initWithContentsOfURL:url];
NSLog(@"%@",[array objectAtIndex:0]);
[self imposta];
return YES;
}
这用于加载文件。 问题是我无法使用加载数组的内容设置标签。该数组已加载,因为使用 NSLog 我看到了正确的值,问题是我无法将其放在上面
最佳答案
首次打开文档时,会在实例化窗口 Controller 之前调用 -readFromURL:ofType:error:
。这意味着您的 nameLabel 连接可能为零。您应该尽早在 -awakeFromNib
或 -windowControllerDidLoadNib:
中进行更新。
但实际上,NSDocument 是一个模型对象,因此无论如何都不应该直接连接到 View 对象。文档应该只存储其数据,窗口 Controller 应该负责更新 View 。
关于xcode - 恢复文件文档基础应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7672414/