Why the Extension is "momd" but not "xcdatamodel" when search the path for the Model file

I create a Master-Detail application using Core Data. And there is a simple code to get the path for Model file:

NSURL *modelURL = [[NSBundle mainBundle] URLForResource:@"Model" withExtension:@"momd"];

I have no idea why the extension isn't "xcdatamodel" but "momd".

Does anyone know the answer?


Solution 1:

The mom and momd files are compiled versions of xcdatamodel and xcdatamodeld files.

There information about how the compiling process works here (page 31). To quote from the docs:

A data model is a deployment resource. In addition to details of the entities and properties in the model, a model you create in Xcode contains information about the diagram—its layout, colors of elements, and so on. This latter information is not needed at runtime. The model file is compiled using the model compiler, momc, to remove the extraneous information and make runtime loading of the resource as efficient as possible.