Я создал совершенно новое приложение macOS, используя Xcode 9.2, с выбранными в шаблоне проекта «Создать приложение на основе документа» и «Использовать основные данные».
Я внес четыре изменения:
Отредактировал модель CoreData, добавив в нее сущность с именем «Сущность» с двумя строковыми атрибутами: «имя» и «содержимое».
Использовал "Editor-> Create NSManagedObject subclass" для генерации вспомогательных методов для сущности.
Заменил стандартный Window.xib новым, пустое Window.xib.
Добавлен следующий код в Document.swift, который содержит мой подкласс NSPersistentDocument
:
override func windowControllerDidLoadNib(_ windowController: NSWindowController)
{
super.windowControllerDidLoadNib(windowController)
let entity = Entity(context: managedObjectContext!)
entity.name = "TestEntity"
entity.content = "test content goes here"
Swift.print("edited: \(self.isDocumentEdited)") // prints "NO"
}
Я предположил, что этого будет достаточно, чтобы автоматически включить пункт меню File-> Save ...Это не.Это остается серым.Значение isDocumentEdited
в печатном виде равно NO
.
Однако , когда я закрываю приложение, меня спрашивают Do you want to save the changes made to the document "Untitled"?
в стандартном диалоговом окне.Итак, Core Data знает о моих изменениях, но, кажется, возможно, они не связаны с окном документа ...?
Что мне здесь не хватает?Что мне нужно сделать, чтобы связать окно документа переднего плана с экземпляром NSPersistentDocument
?