区分Cocoa应用程序中的新文档和已还原文档

时间:2013-06-16 03:17:37

标签: cocoa nswindow document-based

在我的项目中,我需要能够区分用户创建的文档和restoreStateWithCoder在应用程序启动时恢复的文档之间的区别,因为有些事情需要为新文档完成,而不是已恢复的文档。我怎么能这样做?

2 个答案:

答案 0 :(得分:0)

如何对“NSDocument”进行子类化并将该子类用于文档?

然后,您可以捕获“restoreStateWithCoder”,并为那些从磁盘还原而不是通过“File - > New”命令创建的文档设置唯一标志(例如BOOL属性)

您也可以尝试"method swizzle"restoreStateWithCoder”,但您必须决定在哪个对象中设置哪个属性。

答案 1 :(得分:0)

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

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

convenience init(type tyepName: String) throws

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

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