归档/取消归档NSWindowController是否合适?

时间:2011-08-08 16:33:12

标签: objective-c xcode4 interface-builder nswindow nswindowcontroller

我很难理解出了什么问题。我有一个带有NSWindow和NSTextView的NSWindowController。我想将NSWindowController NSWindow(及其所有控件)存档到文件中。

然后,我想取消归档同样的NSWindowController和NSWindow以及文件中的所有视图。但Apple医生说:

Note: Although the NSWindow class inherits the NSCoding protocol from NSResponder, the class does not support coding. Legacy support for archivers exists but its use is deprecated and may not work. Any attempt to archive or unarchive an NSWindow object using a keyed coding object raises an NSInvalidArgumentException exception.

重要的是,如果我使用encodeWithObject:windowController,则不存储NSWindow。因此,当我为windowController执行decodeWithObject时,不会加载NSWindow。

如何归档/取消归档NSWindowController / NSWindow及其所有控件?我错过了什么?

1 个答案:

答案 0 :(得分:1)

根据您的回答,这绝对 错误的方式。归档控制器/视图对象图表唯一有意义的地方是将其归档为nib / xib。文档包含数据,而不是应用程序机器的位。

如果您定位Lion以下的任何内容,请在保存文档时将您的状态保存在文档数据中的某个位置,并在加载文档时将其恢复(请参阅各个加载阶段Document-Based Applications Overview以了解文档的位置/何时这样做。)

如果你的目标是Lion及以上版本,那么文档还不是很详细(在某些情况下完全不存在),但是Lion只需要你很少的努力即可完全支持。请参阅the WWDC 2011 videos,会话119 - 恢复和自动终止。