Reference
- Creating a Core Data Model : Apple문서
- Setting Up a Core Data Stack :
codegen을 class definition으로 설정 시, 일단 NSManagedObject subclass 생성을 하여 빌드설정이 되게 한 이후에, redeclaration을 막기위해 자동 생성된 class/프로퍼티 파일은 삭제해주어야 한다
(굳이 AppDelegate에 만들 필요는 없음)
class AppDelegate {
...
lazy var persistentContainer: NSPersistentContainer = {
let container = NSPersistentContainer(name: "DataModel")
container.loadPersistentStores { description, error in
if let error = error {
fatalError("Unable to load persistent stores: \(error)")
}
}
return container
}()
func saveContext(backgroundContext: NSManagedObjectContext? = nil) {
let context = backgroundContext ?? viewContext
guard context.hasChanges else { return }
do {
try context.save()
} catch let error as NSError {
print("Error: \(error), \(error.userInfo)")
}
}
...
}
guard let context = (UIApplication.shared.delegate as? AppDelegate)?.persistentContainer.viewContext else {
return
}
let persons = try context.fetch(Person.fetchRequest())
guard let context = (UIApplication.shared.delegate as? AppDelegate)?.persistentContainer.viewContext else {
return
}
let person = Person(context: context)
person.name = "jn"
person.age = 20
try? context.save()
guard let context = (UIApplication.shared.delegate as? AppDelegate)?.persistentContainer.viewContext else {
return
}
context.delete(person)
try? context.save()