Monday, July 29, 2013

Core Data in IOS (for Beginners)

Core Data in IOS (for Beginners)

Introduction
Core Data is a schema-driven object graph management and persistence framework
Fundamentally, Core Data helps you to save model objects (in the sense of the model-view-controller design pattern) to a file and get them back again.






Core Data is available on iOS 3.0 and later.


--------------------------------------------------------------------------------------
What i am going to do is...


Step 1

Create a ARC Project ....



Click the ARC also



Step 2

Click the "CoreDataTute.xdatamodeled"




Click Add Entity icon and type Student(Table name)


 Click the plus Sign to add Attribute





Step 3
click this icon to see the table



Step 4

Add new class for your Project



Step 5

Type this code in your  .h class (which you add new class in above)
#import <UIKit/UIKit.h>

@interface InsertDataViewController : UIViewController
{
 IBOutlet UITextField *nameField;

}
-(IBAction)save;
-(IBAction)Fetch;


@end

----------------------------------------------------------------

Step 6

Type this code in your  .m class (which you add new class in above)
Import the "AppDelegate.h"  .m class to your class
-----------------------------------------------------------------------------------------------------------------------

#import "InsertDataViewController.h"
#import "AppDelegate.h"

@interface InsertDataViewController ()

@end

@implementation InsertDataViewController

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
}
return self;
}

- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view from its nib.
}


-(IBAction)save{

AppDelegate *appDelegate=(AppDelegate *)[[UIApplication sharedApplication]delegate];

//Entity for table name : Team
NSEntityDescription *entity=[NSEntityDescription insertNewObjectForEntityForName:@"Student" inManagedObjectContext:appDelegate.managedObjectContext];

//set value for the column name
[entity setValue:nameField.text forKey:@"name"];

NSError *error;


//its returns true when values inserted in database succesfuly otherwise false
BOOL isSaved= [appDelegate.managedObjectContext save:&error]; 
NSLog(@"Successfully Saved : flags @%d",isSaved);

}


-(IBAction)Fetch{

AppDelegate *appDelegate=(AppDelegate *)[[UIApplication sharedApplication]delegate];

//create Entity object for Table : Student
NSEntityDescription *entity=[NSEntityDescription entityForName:@"Student" inManagedObjectContext:appDelegate.managedObjectContext];

//create fetch request
NSFetchRequest *fetchRqst=[[NSFetchRequest alloc]init];
[fetchRqst setEntity:entity];

//Get all rows in mutable array
NSMutableArray *array=[[appDelegate.managedObjectContext executeFetchRequest:fetchRqst error:nil]mutableCopy];

//Core data return each row as managed object so we can access rows values through key value pair
for(NSManagedObject *obj in array)
{
   NSLog(@"SLIIT Student Names: %@\n",[obj valueForKey:@"name"]);
}

}

- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}

@end

-----------------------------------------------------------------------------------

Step 7

Design the following Ui and Connect those Method like this.....







Step 8

 go to the AppDelegate.m class and set Above viewController(in my case it is  InsertDataViewController)  as a Root View Controller
 to do that import view controller Header file to the AppDelegate.h class 
and change the code of   

"- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions"  method in AppDelegate.h

#import "InsertDataViewController.h"

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
// Override point for customization after application launch.
InsertDataViewController *rootViewController=
[[InsertDataViewController alloc] initWithNibName:@"InsertDataViewController" bundle:nil];
[self.window setRootViewController:rootViewController];

self.window.backgroundColor = [UIColor whiteColor];
[self.window makeKeyAndVisible];
return YES;
}

--------------------------------------------------------------------------------------------------------------

Step 9

Run Your App & insert some data and Click the fetch button ....



  • After click Save Button



this mean your successfully  added .................!

  • After Click Fetch Button




1 comment:

  1. Exactly what I needed to get going. Thanks for keeping it straight forward and clean!

    ReplyDelete