CoreData简单教程

coreData初步认识

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

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




到这里就完成了。
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值