Reputation: 5960
I rearranged the files in my program folder, grouping them into appropriate subfolders. I made sure they all show up in the compiled sources list, including the 'xcdatamodeld' file.
However, creating a managed object model is not working with the following code:
if (mom_ != nil) {
return mom_;
}
self.mom = [NSManagedObjectModel mergedModelFromBundles:nil];
return mom_;
I examined [NSBundle mainBundle]
, and specifically
[[NSBundle mainBundle] pathForResource:@"Words" ofType:@"xcdatamodeld"]
and
[[NSBundle mainBundle] pathForResource:nil ofType:@"xcdatamodeld"]
They both return nil. I can see that other resources are there when I check for them by name and type.
There is a folder called "Words.momd" in the app bundle file.
What might have happened and how can it be fixed?
Upvotes: 2
Views: 1485
Reputation: 69027
Try using:
NSURL *modelURL = [[NSBundle mainBundle] URLForResource:@"Words" withExtension:@"momd"];
You want to load the compiled data model, vs. the xcdatamodeld file:
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.
(source)
Upvotes: 2
Reputation: 5038
You can use MagicalRecords framework for it:
https://github.com/magicalpanda/MagicalRecord
and setup your db in one line of code:
[MagicalRecord setupCoreDataStackWithAutoMigratingSqliteStoreNamed:@"Words"];
Upvotes: 0