- こちら を参考に、対象の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作成前に実行することにした。
コメントを残す