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