|
//
// CoreDataManager.m
// ThePaperDemo
//
// Created by scar1900 on 14/11/10.
// Copyright (c) 2014年 scar1900. All rights reserved.
//
#import "CoreDataManager.h"
@interface CoreDataManager() {
}
@end
@implementation CoreDataManager
@synthesize managedObjectContext = _managedObjectContext;
@synthesize managedObjectModel = _managedObjectModel;
@synthesize persistentStoreCoordinator = _persistentStoreCoordinator;
+(CoreDataManager *)shareInstance {
static dispatch_once_t pred;
static CoreDataManager *shared = nil;
dispatch_once(&pred, ^{
shared = [[CoreDataManager alloc] init];
});
return shared;
}
+ (void)clearInstance
{
CoreDataManager *shared = [CoreDataManager shareInstance];
shared = nil;
}
#pragma mark --
#pragma mark function
- (void)saveContext
{
NSError *error = nil;
NSManagedObjectContext *managedObjectContext =self.managedObjectContext;
if (managedObjectContext !=nil) {
if ([managedObjectContext hasChanges] && ![managedObjectContext save:&error]) {
NSLog(@"Unresolvederror %@, %@", error, [error userInfo]);
abort();
}
}
}
#pragma mark -
#pragma mark Application's Documents directory
/**
Returns the URL to the application's Documents directory.
*/
- (NSURL *)applicationDocumentsDirectory {
return [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject];
}
#pragma mark -
#pragma mark Core Data stack
/**
Returns the managed object context for the application.
If the context doesn't already exist, it is created and bound to the persistent store coordinator for the application.
*/
- (NSManagedObjectContext *)managedObjectContext {
if (_managedObjectContext != nil) {
return _managedObjectContext;
}
NSPersistentStoreCoordinator *coordinator = [self persistentStoreCoordinator];
if (coordinator != nil) {
_managedObjectContext = [[NSManagedObjectContext alloc] init];
[_managedObjectContext setPersistentStoreCoordinator:coordinator];
}
return _managedObjectContext;
}
/**
Returns the managed object model for the application.
If the model doesn't already exist, it is created from the application's model.
*/
- (NSManagedObjectModel *)managedObjectModel {
if (_managedObjectModel != nil) {
return _managedObjectModel;
}
NSURL *modelURL = [[NSBundle mainBundle] URLForResource:@"TPCoreDataModal" withExtension:@"momd"];
_managedObjectModel = [[NSManagedObjectModel alloc] initWithContentsOfURL:modelURL];
return _managedObjectModel;
}
- (NSPersistentStoreCoordinator *)persistentStoreCoordinator
{
if (_persistentStoreCoordinator !=nil) {
return _persistentStoreCoordinator;
}
NSURL *storeURL = [[self applicationDocumentsDirectory]URLByAppendingPathComponent:@"TPCoreDataModal.sqlite"];
NSError *error = nil;
_persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc]initWithManagedObjectModel:[self managedObjectModel]];
if (![_persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeURL options:nil error:&error]) {
NSLog(@"Unresolvederror %@, %@", error, [error userInfo]);
abort();
}
return _persistentStoreCoordinator;
}
- (void)deleteCoreDataFile {
//Erase the persistent store from coordinator and also file manager.
NSPersistentStore *store = [self.persistentStoreCoordinator.persistentStores lastObject];
NSError *error = nil;
NSURL *storeURL = store.URL;
[self.persistentStoreCoordinator removePersistentStore:store error:&error];
[[NSFileManager defaultManager] removeItemAtURL:storeURL error:&error];
NSLog(@"Data Reset");
//Make new persistent store for future saves (Taken From Above Answer)
if (![self.persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeURL options:nil error:&error]) {
NSLog(@"Unresolvederror %@, %@", error, [error userInfo]);
abort();
}
}
- (void)deleteCoreDataFileWhenUpdate {
NSURL *storeURL = [[self applicationDocumentsDirectory]URLByAppendingPathComponent:@"TPCoreDataModal.sqlite"];
//Erase the persistent store from coordinator and also file manager.
// NSPersistentStore *store = [self.persistentStoreCoordinator.persistentStores lastObject];
NSError *error = nil;
// NSURL *storeURL = store.URL;
// [self.persistentStoreCoordinator removePersistentStore:store error:&error];
[[NSFileManager defaultManager] removeItemAtURL:storeURL error:&error];
NSLog(@"Data Reset");
}
@end
|