rovan-a
11/13/2014 - 10:32 AM

iOS - Core Data Example

iOS - Core Data Example


// INSERT
NSError *error = nil;
NSEntityDescription *entityDescription = [NSEntityDescription entityForName:@"Messages"inManagedObjectContext:self.managedObjectContext];

NSManagedObject *newRecord = [[NSManagedObject alloc] initWithEntity:entityDescription insertIntoManagedObjectContext:self.managedObjectContext];

[newRecord setValue:@"Ini adalah contents" forKey:@"content"];
[newRecord setValue:@"Alfarrys" forKey:@"name"];

if (![newRecord.managedObjectContext save:&error]) {
    NSLog(@"Unable to save managed object context.");
    NSLog(@"%@, %@", error, error.localizedDescription);
}



// FETCHING
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Messages" inManagedObjectContext:self.managedObjectContext];
[fetchRequest setEntity:entity];

NSError *error_ = nil;
NSArray *result = [self.managedObjectContext executeFetchRequest:fetchRequest error:&error_];
if (error_) {
    NSLog(@"Unable to execute fetch request.");
    NSLog(@"%@, %@", error_, error_.localizedDescription);
    
} else {
    
    int resultCount = result.count;
    
    if (resultCount > 0) {
        
        for (int i = 0; i<resultCount; i++) {
            NSManagedObject *person = (NSManagedObject *)[result objectAtIndex:i];
            NSString *fetch_name    = [person valueForKey:@"name"];
            NSString *fetch_content = [person valueForKey:@"content"];
        
            NSLog(@"%@ - %@",fetch_name, fetch_content);
        }

    }
}



//UPDATE
//same as insert but fetch it first, get the object then updating
NSError *update_error = nil;
[person setValue:@"Name Changed" forKey:@"name"];
[person setValue:@"Content Changed" forKey:@"content"];
if (![person.managedObjectContext save:&error]) {
    NSLog(@"Update Failed");
    NSLog(@"%@, %@", update_error, update_error.localizedDescription);
}



//DELETE
//fetch it first, get the object then delete
[self.managedObjectContext deleteObject:person];
NSError *deleteError = nil;

if (![person.managedObjectContext save:&deleteError]) {
    NSLog(@"Unable to save deleted object.");
    NSLog(@"%@, %@", deleteError, deleteError.localizedDescription);
}
@implementation AppDelegate

@synthesize managedObjectContext = _managedObjectContext;
@synthesize managedObjectModel = _managedObjectModel;
@synthesize persistentStoreCoordinator = _persistentStoreCoordinator;

- (NSManagedObjectContext *)managedObjectContext{
    if(_managedObjectContext != nil){
        return _managedObjectContext;
    }
    
    NSPersistentStoreCoordinator *coordinator = [self persistentStoreCoordinator];
    if(coordinator != nil){
        _managedObjectContext = [[NSManagedObjectContext alloc] init];
        [_managedObjectContext setPersistentStoreCoordinator:coordinator];
    }
    return _managedObjectContext;
}

- (NSManagedObjectModel *)managedObjectModel {
    if(_managedObjectModel != nil){
        return _managedObjectModel;
    }
    NSURL *modelURL = [[NSBundle mainBundle] URLForResource:@"RovanAlfarryCD" withExtension:@"momd"];
    _managedObjectModel = [[NSManagedObjectModel alloc] initWithContentsOfURL:modelURL];
    return _managedObjectModel;
}

- (NSPersistentStoreCoordinator *)persistentStoreCoordinator{
    if(_persistentStoreCoordinator != nil){
        return _persistentStoreCoordinator;
    }
    
    NSURL *storeURL = [[self applicationDocumentsDirectory] URLByAppendingPathComponent:@"RovanAlfarryCD.sqlite"];
    
    NSError *error = nil;
    _persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:[self managedObjectModel]];
    
    if(![_persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeURL options:nil error:&error]){
        
        NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
    }
    
    return _persistentStoreCoordinator;
}

- (NSURL *)applicationDocumentsDirectory{
    return [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject];
}

@end
#import <CoreData/CoreData.h>

@property (nonatomic, retain, readonly) NSManagedObjectModel *managedObjectModel;
@property (nonatomic, retain, readonly) NSManagedObjectContext *managedObjectContext;
@property (nonatomic, retain, readonly) NSPersistentStoreCoordinator *persistentStoreCoordinator;

- (NSURL *)applicationDocumentsDirectory; // for refrence filed for core data