I have three DataModels defined in my Application. My question is, if i need three different contexts? so three different sqlite files?
At the moment every time i save a record into my database i do the following:
managedObjectContext = [[AppDelegate sharedAppDelegate] getManagedObjectContextWithDB:@"TestDB.sqlite"];
Or if i save a record into my other DataModel i do:
managedObjectContext = [[AppDelegate sharedAppDelegate] getManagedObjectContextWithDB:@"TestDB2.sqlite"];
So is that the right way? Or do i have to have only one context for all three models?
Here are the other methods:
- (NSManagedObjectContext *)getManagedObjectContextWithDB:(NSString *)db
{
if (_managedObjectContext != nil) {
return _managedObjectContext;
}
NSPersistentStoreCoordinator *coordinator = [self persistentStoreCoordinatorWithDB:db];
if (coordinator != nil) {
_managedObjectContext = [[NSManagedObjectContext alloc] init];
[_managedObjectContext setPersistentStoreCoordinator: coordinator];
}
return _managedObjectContext;
}
- (NSManagedObjectModel *)managedObjectModel {
if (_managedObjectModel != nil) {
return _managedObjectModel;
}
_managedObjectModel = [NSManagedObjectModel mergedModelFromBundles:nil];
return _managedObjectModel;
}
- (NSPersistentStoreCoordinator *)persistentStoreCoordinatorWithDB:(NSString *)db {
if (_persistentStoreCoordinator != nil) {
return _persistentStoreCoordinator;
}
NSURL *storeUrl = [NSURL fileURLWithPath: [[self applicationDocumentsDirectory]
stringByAppendingPathComponent: db]];
NSDictionary *options = @{
NSMigratePersistentStoresAutomaticallyOption : @YES,
NSInferMappingModelAutomaticallyOption : @YES
};
NSError *error = nil;
_persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc]
initWithManagedObjectModel:[self managedObjectModel]];
if(![_persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType
configuration:nil URL:storeUrl options:options error:&error]) {
/*Error for store creation should be handled in here*/
}
return _persistentStoreCoordinator;
}