NSDocument определяет, когда создается новый документ, а не восстановленный сохраненный документ

Я обнаружил серьезную проблему с архитектурой моего приложения на основе документов. В основном, хранилище модели (простая строка) в глобальной переменной, каждый раз, когда изменяется текст в поле. У меня есть документ сохранить эту строку как данные и восстановить заново открытые файлы, используя эти данные.

Теперь главная проблема, которую я сейчас вижу, заключается в том, что, если я восстановлю любой сохраненный файл, я заполняю глобальную переменную из документа в функции "readFromData" документов (работает).

Но если я создаю новый документ, "readFromData" никогда не вызывается, поэтому у меня нет возможности установить глобальную строку на "", и, таким образом, моя новая глобальная переменная документов по-прежнему заполняется последней сохраненной строкой. (Я использую это, чтобы вернуть строку в текстовое представление при загрузке.

Таким образом, в качестве простого обходного пути мне нужно было бы иметь возможность использовать функцию, которая автоматически вызывается и вызывается только при создании нового документа, чтобы вернуть моей глобальной переменной значение "".

Я не могу найти такую ​​функцию, я могу переопределить. Кто-то существует?

1 ответ

Я не уверен, что понимаю, что вы пытаетесь сделать.

Вы можете использовать этот инициализатор NSDocument:

/* Initialize a new empty document of a specified type,
   and return it if successful.
   …
   You can override this method to perform initialization that
   must be done when creating new documents but should not be done
   when opening existing documents. 
*/
- (instancetype)initWithType:(NSString *)typeName error:(NSError **)outError;

Это вызывается ровно один раз для каждого документа при первоначальном создании документа. Он не будет вызываться при открытии документа после сохранения на диске.

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