You don’t have to do anything special to access the non-managed properties, they’re just regular properties.
The reason why things may feel confusing is that the mechanisms required to make CoreData work involve the system generating intermediate classes with generated methods with the appropriate names that the various specifications are expecting. When you specify “pineapples” for an attribute in the entity description, everything for that pineapples gets generated depending on what happens when the system checks to see whether you implemented custom code for ”pineapples”.
For non-managed properties, Core Data doesn’t do anything. At all. Because there’s nothing in the entity description to tell it to do anything. So there’s nothing special generated and nothing special you do to interact with the property.
Sorry I guess I wasn't clear - my real problem is that I essentially want to do something akin to a Swift property observer on a managed property - the key part from the linked document above is:
NSManagedObject will now also allow subclasses to override accessors and still invoke the implementation that otherwise would have been dynamically generated.
So I have a managed property A, and a second, non-managed property B, and when A changes I want to update B.