NSObjectControllerに初期データを作る

  • こちら を参考に、対象のSManagedObjectが無ければ作る処理を作成。
  • 追加することで編集したことにしたくなかったので、undo登録を一時停止する処理を追加した。
    @discardableResult func singularObj(entity:String) -> NSManagedObject?
    {
        var singularObject: NSManagedObject? = nil
        let fetchRequest: NSFetchRequest<NSManagedObject> = NSFetchRequest(entityName: entity)
        let objects = try? self.managedObjectContext!.fetch(fetchRequest)
        singularObject = objects?.first

        if singularObject == nil {
            let managedObjectContext:NSManagedObjectContext = self.managedObjectContext!
            managedObjectContext.undoManager!.disableUndoRegistration()

            singularObject = NSEntityDescription.insertNewObject(forEntityName: entity, into: self.managedObjectContext!)

            managedObjectContext.processPendingChanges()
            managedObjectContext.undoManager!.enableUndoRegistration()
        }
        return singularObject
    }

上記のメソッドをWindowController作成前に実行することにした。