Guest User

Untitled

a guest
Jul 22nd, 2018
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.17 KB | None | 0 0
  1. @interface CoreData ()
  2. + (NSURL *)coreServiceDirectory;
  3. + (NSManagedObjectModel *)model;
  4. + (NSPersistentStoreCoordinator *)coordinator;
  5. + (NSManagedObjectContext *)context;
  6. + (NSMutableSet *)coreDataErrors;
  7.  
  8. @end
  9.  
  10.  
  11.  
  12. @implementation CoreData
  13. #pragma mark Initialization
  14. static NSManagedObjectModel *s_objectModel = nil;
  15. static NSPersistentStoreCoordinator *s_coordinator = nil;
  16. static NSManagedObjectContext *s_context = nil;
  17. static NSMutableSet *s_errors = nil;
  18.  
  19. + (void)initialize {
  20. s_errors = [[NSMutableSet alloc] initWithCapacity:5];
  21.  
  22. NSURL *modelURL = [[NSBundle mainBundle] URLForResource:@"my_coreDataModel" withExtension:@"momd"];
  23. s_objectModel = [[NSManagedObjectModel alloc] initWithContentsOfURL:modelURL];
  24.  
  25. s_coordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:s_objectModel];
  26. NSError *storeError = nil;
  27. [s_coordinator addPersistentStoreWithType:NSSQLiteStoreType
  28. configuration:nil
  29. URL:[[CoreData coreServiceDirectory] URLByAppendingPathComponent:@"coredata.sqlite"]
  30. options:nil
  31. error:&storeError];
  32. if (storeError) {
  33. [s_errors addObject:storeError];
  34. }
  35.  
  36. s_context = [[NSManagedObjectContext alloc] init];
  37. [s_context setPersistentStoreCoordinator:s_coordinator];
  38. }
  39.  
  40. #pragma mark Class Methods
  41. + (NSURL *)coreServiceDirectory {
  42. return [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject];
  43. }
  44. + (NSManagedObjectModel *)model {
  45. return s_objectModel;
  46. }
  47. + (NSPersistentStoreCoordinator *)coordinator {
  48. return s_coordinator;
  49. }
  50. + (NSManagedObjectContext *)context {
  51. return s_context;
  52. }
  53. + (NSMutableSet *)coreDataErrors {
  54. return s_errors;
  55. }
  56.  
  57.  
  58. #pragma mark Life Cycle
  59. - (id)init {
  60. if (self = [super init]) {
  61. self.context = [CoreData context];
  62. self.coordinator = [CoreData coordinator];
  63. self.objectModel = [CoreData model];
  64. }
  65. return self;
  66. }
  67.  
  68. - (void)dealloc {
  69. self.context = nil;
  70. self.coordinator = nil;
  71. self.objectModel = nil;
  72. [super dealloc];
  73. }
  74.  
  75.  
  76. #pragma mark Synthesizer
  77. @synthesize objectModel, context, coordinator;
  78.  
  79. @end
Add Comment
Please, Sign In to add comment