Created
February 6, 2011 19:49
-
-
Save pier-oliviert/813657 to your computer and use it in GitHub Desktop.
CoreData
This file contains 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
@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