0

在我的项目中,我需要能够区分用户创建的文档和在应用程序启动时通过 restoreStateWithCoder 恢复的文档之间的区别,因为对于新文档需要做一些事情,而不是恢复的文档。我怎样才能做到这一点?

4

2 回答 2

0

将“ NSDocument”子类化并为您的文档使用该子类怎么样?

然后,您可以在发生时捕获“ restoreStateWithCoder”,并为那些从磁盘恢复且未通过“文件-> 新建”命令重新创建的文档设置一个唯一标志(例如 BOOL 属性)。

您也可以尝试“方法调配”restoreStateWithCoder”,但您必须决定在哪个对象中设置什么属性。

于 2013-06-16T03:28:28.640 回答
0

[为 Swift 回答这个问题,但总体思路也适用于 Objective-C]

当文档是全新的时,您通常会调用以下函数:

convenience init(type tyepName: String) throws

您可以在该函数中设置一个标志(例如needSpecialHandling = true,一个最初初始化为 的变量false)来说明您是否需要针对这种情况进行一些特殊处理。

然后在makeWindowControllers()函数中使用该变量触发调用特殊代码 (if true),就像在windowControllerDidLoadNib函数中调用它一样。

于 2015-07-24T17:50:58.027 回答