CoreData简单教程

coreData初步认识

根据这片文档可以自己初步建立一个coreData,进行简单的数据的增、删、改、查。

1、新建工程,记得勾选Use Core Data

CoreData简单教程_第1张图片
image01.png

如果新建工程的时候忘记勾选Use Core Data,也可以自行添加,快捷键command+N,选择iOS ->Core Data -> Data Model

CoreData简单教程_第2张图片
image02

2、建立好以后可以看到HelloCoreData.xcdatamodeld,在这里可以添加实体和实体的属性。需要注意的是:实体名字必须以大写字母开头。

CoreData简单教程_第3张图片
20160815173709470.png

3、然后新建一个file,iOS -> Core Data -> NSManagedObject cubclass

CoreData简单教程_第4张图片
image03

4、点击Next进入下一步,勾选自己建立的工程(默认是勾选的)

CoreData简单教程_第5张图片
image04.png

5、点击Next,勾选自己创建的实体(默认是勾选的)

CoreData简单教程_第6张图片
image05.png

6、点击Next以后我们就可以看到建立好的实体是有4个文件。这里需要注意的是,xcode7以后建立的都是4个,而7以前的是两个

CoreData简单教程_第7张图片
image06.png

7、下面是代码实现一个简单的增、删、查、改,在ViewController.m文件里配置如下:

#import "ViewController.h"  
#import "AppDelegate.h"  
#import   
#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  
CoreData简单教程_第8张图片
image07

你可能感兴趣的:(CoreData简单教程)