Core Data: Abstract Entity in Fetch Request
I've done something similar, however that entity was not abstract. It was a standard entity (with no instances) and the other entities that I fetched were all derived from that entity. I haven't tried it with an abstract class, however, looking at the docs it appears that it might not be possible:
Core Data Programming Guide
Abstract Entities You can specify that an entity is abstract—that is, that you will not create any instances of that entity. You typically make an entity abstract if you have a number of entities that all represent specializations of (inherit from) a common entity which should not itself be instantiated. For example, in a drawing application you might have a Graphic entity that defines attributes for x and y coordinates, color, and drawing bounds. You never, though, instantiate a Graphic. Concrete sub-entities of Graphic might be Circle, TextArea, and Line.
My suggestion would be to set things up with the abstract Animal entity and give it a shot. If it doesn't work then just make the Animal entity non-abstract (words are failing me, is that what we would call it? Perhaps 'concrete' is better?) and you should be fine. If anyone has done this with an abstract class I would to hear about it.
You can definitely use that approach.
From Apple's Core Data Programming guide:
Entity inheritance works in a similar way to class inheritance; and is useful for the same reasons. If you have a number of entities that are similar, you can factor the common properties into a superentity, also known as a parent entity. Rather than specifying the same properties in several entities, you can define them in one entity, and the subentities inherit them. For example, you might define a Person entity with attributes firstName and lastName, and subentities Employee and Customer, which inherit those attributes.