Различие между новыми документами и восстановленными документами в приложении Какао

В моем проекте мне нужно знать разницу между документами, созданными пользователем, и документами, восстановленными при запуске приложения restoreStateWithCoder, потому что есть некоторые вещи, которые необходимо сделать для новых документов, но не для восстановленных. Как я могу это сделать?

2 ответа

Как насчет подклассовNSDocument"и использовать этот подкласс для вашего документа?

Тогда вы можете пойматьrestoreStateWithCoder"как это происходит и установите уникальный флаг (например, свойство BOOL) для тех документов, которые восстанавливаются с диска и не создаются заново с помощью команды" Файл -> Новый ".

Вы также можете попытаться "метод swizzle "restoreStateWithCoder", но вы должны решить, какое свойство устанавливать в каком объекте.

[Отвечая на это для Swift, но общая идея работает и для Objective-C]

Когда документ новый, вы обычно получаете вызов следующей функции:

convenience init(type tyepName: String) throws

Вы можете установить флаг в этой функции (скажем, needSpecialHandling = trueпеременная, которая изначально инициализирована false) сказать, нужна ли вам специальная обработка для таких случаев.

Тогда в makeWindowControllers() Функция, которую вы используете эту переменную для запуска вызова специального кода (если true) так же, как вы вызвали его, возможно, в windowControllerDidLoadNib функция.

Другие вопросы по тегам