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;
Это вызывается ровно один раз для каждого документа при первоначальном создании документа. Он не будет вызываться при открытии документа после сохранения на диске.