Core Data Property-Level Model Validation in Swift 4
I ran into an issue while writing property validation methods for a Core Data stack where the methods simply weren’t being called. After a bit of head scratching I realised it was because the methods needed to be annotated with @objc
. This wasn’t needed in Swift 3 because @objc
was inferred on all methods of subclasses of NSObject
; however, the behaviour of @objc
inference changed in Swift 4. Now, subclasses of NSObject
must explicitly mark methods that need to be accessible from Objective-C. This took longer to realise than it should have since the Core Data documentation’s sample code for property-level validation hasn’t been updated for Swift 4.