Created
March 20, 2014 00:36
-
-
Save aug2uag/9654912 to your computer and use it in GitHub Desktop.
CoreData singleton
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
// | |
// CoreDataManager.h | |
// | |
// Created by Rex Fatahi on 3/17/14. | |
// Copyright (c) 2014 aug2uag. All rights reserved. | |
// | |
#import <Foundation/Foundation.h> | |
@interface CoreDataManager : NSObject | |
@property (nonatomic, retain, readonly) NSManagedObjectModel *managedObjectModel; | |
@property (nonatomic, retain, readonly) NSManagedObjectContext *managedObjectContext; | |
@property (nonatomic, retain, readonly) NSPersistentStoreCoordinator *persistentStoreCoordinator; | |
+ (CoreDataManager *)sharedInstance; | |
- (NSManagedObjectContext *) managedObjectContext; | |
- (NSArray *)returnAllChannelsCreated; | |
- (NSArray *)returnAllChannelsFollowed; | |
@end |
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
// | |
// CoreDataManager.m | |
// | |
// Created by Rex Fatahi on 3/17/14. | |
// Copyright (c) 2014 aug2uag. All rights reserved. | |
// | |
#import "CoreDataManager.h" | |
#import <CoreData/CoreData.h> | |
@implementation CoreDataManager | |
@synthesize managedObjectContext = _managedObjectContext; | |
@synthesize managedObjectModel = _managedObjectModel; | |
@synthesize persistentStoreCoordinator = _persistentStoreCoordinator; | |
static CoreDataManager* sharedInstance = nil; | |
+ (CoreDataManager *)sharedInstance | |
{ | |
if (sharedInstance == nil) { | |
static dispatch_once_t onceToken; | |
dispatch_once(&onceToken, ^{ | |
sharedInstance = [[CoreDataManager alloc] init]; | |
}); | |
} | |
return sharedInstance; | |
} | |
// 1 | |
- (NSManagedObjectContext *) managedObjectContext { | |
// to delete all entries in Core Data | |
/* | |
NSArray *stores = [_persistentStoreCoordinator persistentStores]; | |
for(NSPersistentStore *store in stores) { | |
[_persistentStoreCoordinator removePersistentStore:store error:nil]; | |
[[NSFileManager defaultManager] removeItemAtPath:store.URL.path error:nil]; | |
} | |
_persistentStoreCoordinator = nil; | |
*/ | |
if (_managedObjectContext != nil) { | |
return _managedObjectContext; | |
} | |
NSPersistentStoreCoordinator *coordinator = [self persistentStoreCoordinator]; | |
if (coordinator != nil) { | |
_managedObjectContext = [[NSManagedObjectContext alloc] init]; | |
[_managedObjectContext setPersistentStoreCoordinator: coordinator]; | |
} | |
return _managedObjectContext; | |
} | |
//2 | |
- (NSManagedObjectModel *)managedObjectModel { | |
if (_managedObjectModel != nil) { | |
return _managedObjectModel; | |
} | |
_managedObjectModel = [NSManagedObjectModel mergedModelFromBundles:nil]; | |
return _managedObjectModel; | |
} | |
//3 | |
- (NSPersistentStoreCoordinator *)persistentStoreCoordinator { | |
if (_persistentStoreCoordinator == nil) { | |
NSURL *storeUrl = [NSURL fileURLWithPath: [[self applicationDocumentsDirectory] stringByAppendingPathComponent: @"pcApp"]]; | |
NSError *error = nil; | |
_persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] | |
initWithManagedObjectModel:[self managedObjectModel]]; | |
if(![_persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType | |
configuration:nil URL:storeUrl options:nil error:&error]) { | |
/*Error for store creation should be handled in here*/ | |
} | |
} | |
return _persistentStoreCoordinator; | |
} | |
//4 | |
- (NSArray*)returnAllChannelsCreated | |
{ | |
// initializing NSFetchRequest | |
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init]; | |
//Setting Entity to be Queried | |
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Channel" | |
inManagedObjectContext:self.managedObjectContext]; | |
[fetchRequest setEntity:entity]; | |
NSError* error; | |
// Query on managedObjectContext With Generated fetchRequest | |
NSArray *fetchedRecords = [self.managedObjectContext executeFetchRequest:fetchRequest error:&error]; | |
// Returning Fetched Records | |
return fetchedRecords; | |
} | |
//5 | |
- (NSArray *)returnAllChannelsFollowed | |
{ | |
// initializing NSFetchRequest | |
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init]; | |
//Setting Entity to be Queried | |
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Follow" | |
inManagedObjectContext:self.managedObjectContext]; | |
[fetchRequest setEntity:entity]; | |
NSError* error; | |
// Query on managedObjectContext With Generated fetchRequest | |
NSArray *fetchedRecords = [self.managedObjectContext executeFetchRequest:fetchRequest error:&error]; | |
// Returning Fetched Records | |
return fetchedRecords; | |
} | |
- (NSString *)applicationDocumentsDirectory { | |
return [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject]; | |
} | |
@end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment