Skip to content

Instantly share code, notes, and snippets.

@pier-oliviert
Created February 6, 2011 19:49
Show Gist options
  • Save pier-oliviert/813657 to your computer and use it in GitHub Desktop.
Save pier-oliviert/813657 to your computer and use it in GitHub Desktop.
CoreData
@interface CoreData ()
+ (NSURL *)coreServiceDirectory;
+ (NSManagedObjectModel *)model;
+ (NSPersistentStoreCoordinator *)coordinator;
+ (NSManagedObjectContext *)context;
+ (NSMutableSet *)coreDataErrors;
@end
@implementation CoreData
#pragma mark Initialization
static NSManagedObjectModel *s_objectModel = nil;
static NSPersistentStoreCoordinator *s_coordinator = nil;
static NSManagedObjectContext *s_context = nil;
static NSMutableSet *s_errors = nil;
+ (void)initialize {
s_errors = [[NSMutableSet alloc] initWithCapacity:5];
NSURL *modelURL = [[NSBundle mainBundle] URLForResource:@"my_coreDataModel" withExtension:@"momd"];
s_objectModel = [[NSManagedObjectModel alloc] initWithContentsOfURL:modelURL];
s_coordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:s_objectModel];
NSError *storeError = nil;
[s_coordinator addPersistentStoreWithType:NSSQLiteStoreType
configuration:nil
URL:[[CoreData coreServiceDirectory] URLByAppendingPathComponent:@"coredata.sqlite"]
options:nil
error:&storeError];
if (storeError) {
[s_errors addObject:storeError];
}
s_context = [[NSManagedObjectContext alloc] init];
[s_context setPersistentStoreCoordinator:s_coordinator];
}
#pragma mark Class Methods
+ (NSURL *)coreServiceDirectory {
return [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject];
}
+ (NSManagedObjectModel *)model {
return s_objectModel;
}
+ (NSPersistentStoreCoordinator *)coordinator {
return s_coordinator;
}
+ (NSManagedObjectContext *)context {
return s_context;
}
+ (NSMutableSet *)coreDataErrors {
return s_errors;
}
#pragma mark Life Cycle
- (id)init {
if (self = [super init]) {
self.context = [CoreData context];
self.coordinator = [CoreData coordinator];
self.objectModel = [CoreData model];
}
return self;
}
- (void)dealloc {
self.context = nil;
self.coordinator = nil;
self.objectModel = nil;
[super dealloc];
}
#pragma mark Synthesizer
@synthesize objectModel, context, coordinator;
@end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment