Created
March 1, 2012 12:30
-
-
Save FlaviuSim/1949538 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#import "AppDelegate.h" | |
#import "PatientTableViewController.h" | |
@implementation AppDelegate | |
@synthesize window = _window; | |
@synthesize managedObjectContext = __managedObjectContext; | |
@synthesize managedObjectModel = __managedObjectModel; | |
@synthesize persistentStoreCoordinator = __persistentStoreCoordinator; | |
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions | |
{ | |
// Override point for customization after application launch. | |
UISplitViewController *splitViewController = (UISplitViewController *)self.window.rootViewController; | |
UINavigationController *navigationController = [splitViewController.viewControllers lastObject]; | |
splitViewController.delegate = (id)navigationController.topViewController; | |
UINavigationController *masterNavigationController = [splitViewController.viewControllers objectAtIndex:0]; | |
PatientTableViewController *controller = (PatientTableViewController *)masterNavigationController.topViewController; | |
controller.managedObjectContext = self.managedObjectContext; | |
return YES; | |
} | |
- (void)saveContext | |
{ | |
NSError *error = nil; | |
NSManagedObjectContext *managedObjectContext = self.managedObjectContext; | |
if (managedObjectContext != nil) | |
{ | |
if ([managedObjectContext hasChanges] && ![managedObjectContext save:&error]) | |
{ | |
/* | |
Replace this implementation with code to handle the error appropriately. | |
abort() causes the application to generate a crash log and terminate. You should not use this function in a shipping application, although it may be useful during development. | |
*/ | |
NSLog(@"Unresolved error %@, %@", error, [error userInfo]); | |
abort(); | |
} | |
} | |
} | |
#pragma mark - Core Data stack | |
/** | |
Returns the managed object context for the application. | |
If the context doesn't already exist, it is created and bound to the persistent store coordinator for the application. | |
*/ | |
- (NSManagedObjectContext *)managedObjectContext | |
{ | |
if (__managedObjectContext != nil) | |
{ | |
return __managedObjectContext; | |
} | |
NSPersistentStoreCoordinator *coordinator = [self persistentStoreCoordinator]; | |
if (coordinator != nil) | |
{ | |
__managedObjectContext = [[NSManagedObjectContext alloc] init]; | |
[__managedObjectContext setPersistentStoreCoordinator:coordinator]; | |
} | |
return __managedObjectContext; | |
} | |
/** | |
Returns the managed object model for the application. | |
If the model doesn't already exist, it is created from the application's model. | |
*/ | |
- (NSManagedObjectModel *)managedObjectModel | |
{ | |
if (__managedObjectModel != nil) | |
{ | |
return __managedObjectModel; | |
} | |
NSURL *modelURL = [[NSBundle mainBundle] URLForResource:@"Flavma" withExtension:@"momd"]; | |
__managedObjectModel = [[NSManagedObjectModel alloc] initWithContentsOfURL:modelURL]; | |
return __managedObjectModel; | |
} | |
/** | |
Returns the persistent store coordinator for the application. | |
If the coordinator doesn't already exist, it is created and the application's store added to it. | |
*/ | |
- (NSPersistentStoreCoordinator *)persistentStoreCoordinator { | |
if (__persistentStoreCoordinator != nil) { | |
return __persistentStoreCoordinator; | |
} | |
NSString *storePath = [[[self applicationDocumentsDirectory] URLByAppendingPathComponent: @"CoreDataStore.sqlite"] path]; | |
// Check if the store exists in. | |
if (![[NSFileManager defaultManager] fileExistsAtPath:storePath]) { | |
// copy the payload to the store location. | |
NSString *bundlePath = [[NSBundle mainBundle] bundlePath]; | |
NSString *bundleStore = [bundlePath stringByAppendingPathComponent:@"persistentStore"]; | |
NSLog(@"Source path: %@", bundleStore); | |
NSError *error = nil; | |
[[NSFileManager defaultManager] copyItemAtPath:bundleStore toPath:storePath error:&error]; | |
if (error){ | |
NSLog(@"Error copying payload: %@", error); | |
} | |
} | |
NSError *error = nil; | |
NSURL *storeURL = [NSURL fileURLWithPath:storePath]; | |
__persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:[self managedObjectModel]]; | |
if (![__persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeURL options:nil error:&error]) { | |
NSLog(@"Unresolved error %@, %@", error, [error userInfo]); | |
abort(); | |
} | |
NSLog(@"Final Store path is: %@", [storeURL path]); | |
return __persistentStoreCoordinator; | |
} | |
#pragma mark - Application's Documents directory | |
/** | |
Returns the URL to the application's Documents directory. | |
*/ | |
- (NSURL *)applicationDocumentsDirectory | |
{ | |
return [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject]; | |
} | |
@end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment