1、新建工程,记得勾选Use Core Data
如果新建工程的时候忘记勾选Use Core Data,也可以自行添加,快捷键command+N,选择iOS ->Core Data -> Data Model
2、建立好以后可以看到HelloCoreData.xcdatamodeld,在这里可以添加实体和实体的属性。需要注意的是:实体名字必须以大写字母开头。
3、然后新建一个file,iOS -> Core Data -> NSManagedObject cubclass
4、点击Next进入下一步,勾选自己建立的工程(默认是勾选的)
5、点击Next,勾选自己创建的实体(默认是勾选的)
6、点击Next以后我们就可以看到建立好的实体是有4个文件。这里需要注意的是,xcode7以后建立的都是4个,而7以前的是两个,
7、下面是代码实现一个简单的增、删、查、改,在ViewController.m文件里配置如下:
#import "ViewController.h" #import "AppDelegate.h" #import <CoreData/CoreData.h> #import "Person.h" @interface ViewController () { AppDelegate *app; } @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; app = [UIApplication sharedApplication].delegate; [self createButtons]; } - (void)createButtons { NSArray *array = @[@"增",@"删",@"改",@"查"]; for (int i = 0; i < array.count; i++) { UIButton *btn = [UIButton buttonWithType:UIButtonTypeRoundedRect]; btn.frame = CGRectMake(30+i*60, 100, 40, 40); [btn setTitle:array[i] forState:UIControlStateNormal]; [btn addTarget:self action:@selector(buttonClick:) forControlEvents:UIControlEventTouchUpInside]; btn.tag = i; [self.view addSubview:btn]; } } - (void)buttonClick:(UIButton *)sender { switch (sender.tag) { case 0: //增 [self coreDataAdd]; break; case 1: //删 [self coreDataDelete]; break; case 2: //改 [self coreDataUpdate]; break; case 3: //查 [self coreDataSelect]; break; default: break; } } 8、增 、查、删、改 增(添加数据,name、age、sex) - (void)coreDataAdd { Person *person = [NSEntityDescription insertNewObjectForEntityForName:@"Person" inManagedObjectContext:app.managedObjectContext]; person.name = [NSString stringWithFormat:@"小屁孩%d",arc4random()%10]; person.sex = @"女"; person.age = [NSString stringWithFormat:@"%d",arc4random()%100]; [app.managedObjectContext save:nil]; } 查(按条件查找) - (void)coreDataSelect { //读取这个类,根据key查找 NSEntityDescription *entity = [NSEntityDescription entityForName:@"Person" inManagedObjectContext:app.managedObjectContext]; //建立请求 NSFetchRequest *request = [[NSFetchRequest alloc] init]; //建立请求的是哪一个类 [request setEntity:entity]; //遍历所有的Person,获取所有的Person信息,存储在数组里面 NSArray *array = [app.managedObjectContext executeFetchRequest:request error:nil]; for (Person *person in array) { NSLog(@"%@--%@--%@",person.name,person.sex,person.age); } } 增加后进行查找: 2016-08-15 17:52:55.881 HelloCoreData[4166:240913] 小屁孩2--女--51 2016-08-15 17:52:55.882 HelloCoreData[4166:240913] 小屁孩8--女--89 2016-08-15 17:52:55.882 HelloCoreData[4166:240913] 小屁孩8--女--34 2016-08-15 17:52:55.882 HelloCoreData[4166:240913] 小屁孩3--女--3 2016-08-15 17:52:55.882 HelloCoreData[4166:240913] 小屁孩9--女--99 2016-08-15 17:52:55.882 HelloCoreData[4166:240913] 小屁孩8--女--41 2016-08-15 17:52:55.882 HelloCoreData[4166:240913] 小屁孩0--女--33 2016-08-15 17:52:55.883 HelloCoreData[4166:240913] 小屁孩7--女--1 删(根据条件进行删除,这里我们根据“姓名”查找删除) - (void)coreDataDelete { //读取这个类 NSEntityDescription *entity = [NSEntityDescription entityForName:@"Person" inManagedObjectContext:app.managedObjectContext]; //建立请求 NSFetchRequest *request = [[NSFetchRequest alloc] init]; //建立请求的是哪一个类 [request setEntity:entity]; //设置检索条件 NSPredicate *predicate = [NSPredicate predicateWithFormat:@"name = %@",@"小屁孩8"]; [request setPredicate:predicate]; //遍历所有的Person,获取所有的Person信息,存储在数组里面 NSArray *array = [app.managedObjectContext executeFetchRequest:request error:nil]; if (array.count > 0) { for (Person *person in array) { //删除 [app.managedObjectContext deleteObject:person]; } //保存结果 [app.managedObjectContext save:nil]; NSLog(@"删除完成"); }else{ NSLog(@"没有检索到数据"); } } 删除后进行查找 2016-08-15 17:54:25.188 HelloCoreData[4187:242212] 删除完成 2016-08-15 17:54:27.597 HelloCoreData[4187:242212] 小屁孩2--女--51 2016-08-15 17:54:27.597 HelloCoreData[4187:242212] 小屁孩3--女--3 2016-08-15 17:54:27.597 HelloCoreData[4187:242212] 小屁孩9--女--99 2016-08-15 17:54:27.597 HelloCoreData[4187:242212] 小屁孩0--女--33 2016-08-15 17:54:27.597 HelloCoreData[4187:242212] 小屁孩7--女--1 改(按条件进行修改,这里根据“性别”进行修改) - (void)coreDataUpdate { //读取这个类 NSEntityDescription *entity = [NSEntityDescription entityForName:@"Person" inManagedObjectContext:app.managedObjectContext]; //建立请求 NSFetchRequest *request = [[NSFetchRequest alloc] init]; //建立请求的是哪一个类 [request setEntity:entity]; //设置检索条件 NSPredicate *predicate = [NSPredicate predicateWithFormat:@"name != %@",@"小屁孩2"]; [request setPredicate:predicate]; //遍历所有的Person,获取所有的Person信息,存储在数组里面 NSArray *array = [app.managedObjectContext executeFetchRequest:request error:nil]; if (array.count > 0) { for (Person *person in array) { if ([person.sex isEqualToString:@"女"]) { person.name = @"hello"; } } //保存结果 [app.managedObjectContext save:nil]; NSLog(@"修改完成"); }else{ NSLog(@"没有检索到数据"); } } 修改后进行查找 2016-08-15 17:55:25.742 HelloCoreData[4203:242946] 修改完成 2016-08-15 17:55:27.885 HelloCoreData[4203:242946] 小屁孩2--女--51 2016-08-15 17:55:27.886 HelloCoreData[4203:242946] hello--女--3 2016-08-15 17:55:27.886 HelloCoreData[4203:242946] hello--女--99 2016-08-15 17:55:27.886 HelloCoreData[4203:242946] hello--女--33 2016-08-15 17:55:27.886 HelloCoreData[4203:242946] hello--女--1 到这里就完成了。
