xcode - 恢复文件文档基础应用程序

标签 xcode cocoa document

我的第一个基于文档的应用程序遇到了一些问题。很简单: 在 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/

相关文章:

ios - 使用 Fabric 安装时,应用程序文件大小增加 2.5 倍

javascript - Safari Web 扩展无法发送 native 消息

objective-c - 在运行时创建实例变量?

python - 从 PDF 中提取页眉/页脚(以编程方式)

svn - 如何结合 SVN 和 Confluence 来控制对文件的访问?

ios - xcodebuild exportArchive : no applicable devices found

ios - 为特定时间设置本地通知

iphone - 后台 iPhone 中的多个异步 HTTP 请求

macos - 单击后不隐藏菜单

javascript - 事件 'Window load' 在带有原型(prototype)的 Opera 中不起作用