// // HLBaseObjectManager.m // HeyLets2 // // Created by Alex Bush on 11/13/14. // Copyright (c) 2014 HeyLets. All rights reserved. // #import "HLRestKitManager.h" #import #define SQLITE_DB_NAME @"HeyLets.sqlite" @implementation HLRestKitManager + (instancetype)sharedManager { static HLRestKitManager *sharedManager = nil; static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ NSURL *url = [NSURL URLWithString:API_BASEURL]; sharedManager = [self managerWithBaseURL:url]; sharedManager.requestSerializationMIMEType = RKMIMETypeJSON; [[self HTTPClient] setDefaultHeader:API_PARAMNAME_USERTOKEN value:kUserToken]; [sharedManager setupPersistanceCoordinator]; [sharedManager setupRouters]; [sharedManager setupRequestDescriptors]; [sharedManager setupResponseDescriptors]; }); return sharedManager; } - (void)setupPersistanceCoordinator { NSURL *modelURL = [[NSBundle mainBundle] URLForResource:@"HeyLets" withExtension:@"momd"]; NSManagedObjectModel *managedObjectModel = [[[NSManagedObjectModel alloc] initWithContentsOfURL:modelURL] mutableCopy]; NSPersistentStoreCoordinator *persistentStore = [self setupPersistentStoreCoordinatorToModel:managedObjectModel]; RKManagedObjectStore *managedObjectStore = [[RKManagedObjectStore alloc] initWithPersistentStoreCoordinator:persistentStore]; [managedObjectStore createManagedObjectContexts]; self.managedObjectStore = managedObjectStore; [RKManagedObjectStore setDefaultStore:managedObjectStore]; } - (NSPersistentStoreCoordinator *)setupPersistentStoreCoordinatorToModel:(NSManagedObjectModel*)model { NSString *storePath = [RKApplicationDataDirectory() stringByAppendingPathComponent:SQLITE_DB_NAME]; NSURL *storeURL = [NSURL fileURLWithPath:storePath]; NSError *error = nil; NSPersistentStoreCoordinator* persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:model]; //Setup lightweight migration options NSDictionary *options = @{ NSMigratePersistentStoresAutomaticallyOption : @YES, NSInferMappingModelAutomaticallyOption : @YES }; if (![persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeURL options:options error:&error]) { NSLog(@"Unresolved error %@, %@", error, [error userInfo]); abort(); } return persistentStoreCoordinator; } - (void)setupRouters {} - (void)setupRequestDescriptors {} - (void)setupResponseDescriptors {} - (NSManagedObjectContext *)newChildManagedObjectContext { NSManagedObjectContext *managedObjectContext = [[RKManagedObjectStore defaultStore] newChildManagedObjectContextWithConcurrencyType:NSPrivateQueueConcurrencyType tracksChanges:YES]; return managedObjectContext; } @end