Skip to content

Instantly share code, notes, and snippets.

@aug2uag
Created March 20, 2014 00:36
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save aug2uag/9654912 to your computer and use it in GitHub Desktop.
Save aug2uag/9654912 to your computer and use it in GitHub Desktop.
CoreData singleton
//
// 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
//
// 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