Swift: Custom Setter For CoreData NSManagedObject

My recommendation would be to use KVC. Maybe not the most elegant solution, but conceptionally a logical application of KVC.

Observe a change of the attribute. Register for the change in init(entity:insertIntoManagedObjectContext:) or maybe better in awakeFromFetch and awakeFromInsert, and remove the observer in willTurnIntoFault.