Search code examples
ioscore-data

How to get list of existing entities(tables) in core data


How to get list of existing entities (tables) for a particular schema (Managed Object Model) in core data. I just started implementing core data concept and stuck with these points.

Something like:

SELECT COUNT(*) FROM information_schema.tables WHERE table_schema = 'dbName';

Thanks


Solution

  • You should read through Apple's Core Data Programming Guide. To get the entities for a particular NSManagedObjectModel, you would use one of the following (this assumes you have an NSManagedObjectModel named objectModel):

    NSArray *myEntities = [objectModel entities];
    // Array of all entities in the model
    

    or

    NSDictionary *myEntities = [objectModel entitiesByName];
    // Dictionary of entities in the model, with the entity names as keys
    

    You can read more in the NSManagedObjectModel Class Reference.

    It appears you're coming from a SQL background (as I was). There are a number of concepts in Core Data that are different - sometimes for the better, once you understand them, sometimes requiring more work than a simple SQL statement you may be used to. I think it's important to approach Core Data without SQL "baggage" and treat it as if you're learning how to use a database for the first time - this will help avoid frustration.