114 CoreData基本使用

1.创建模型文件和实体类

1>添加模型文件:
模型文件
2>添加实体类:
实体类
3>添加实体和基本介绍:
基本介绍

2.初始化CoreData:

- (void)setUpCoreData {
    //加载模型文件,一个模型文件相当于存储表的容器,模型文件中有实体,相当于有表,总之相当于加载表
    NSManagedObjectModel *model = [NSManagedObjectModel mergedModelFromBundles:nil];

    //添加持久化存储库,负责将模型文件中的表持久化到数据库中
    NSPersistentStoreCoordinator *store = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:model];

    //生成数据库位置
    NSString *path = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject] stringByAppendingPathComponent:@"person.sql"];

    //生成本地数据库,并将模型文件中的表创出来
    [store addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:[NSURL fileURLWithPath:path] options:nil error:nil];

    //生成上下文
    NSManagedObjectContext *context = [[NSManagedObjectContext alloc] initWithConcurrencyType:NSMainQueueConcurrencyType];

    //将上下文关联到持久化存储库
    context.persistentStoreCoordinator = store;
    _context = context;
}

3.insert:

-(void)addPerson{
    //用实体描述类生成一个实体对象,就是在Person表中生成一个记录
    Person *person = [NSEntityDescription insertNewObjectForEntityForName:@"Person" inManagedObjectContext:_context];
    person.name = @"hehe";

    [_context save:nil];

    NSLog(@"%@",NSHomeDirectory());
}

4.read:

-(void)readPerson{
    //查询的时候需要对某个实体进行请求
    NSFetchRequest *request = [[NSFetchRequest alloc] initWithEntityName:@"Person"];

    //可以设置过滤条件
    NSPredicate *pre = [NSPredicate predicateWithFormat:@"name = %@",@"hehe"];
    request.predicate = pre;

    //当有多笔数据的时候可以设置排序,对某个属性进行排序,ascending控制升序还是降序,YES是降序
    NSSortDescriptor *sort = [NSSortDescriptor sortDescriptorWithKey:@"age" ascending:YES];
    //接收的是一个sort数组
    request.sortDescriptors = @[sort];

    NSArray *persons = [_context executeFetchRequest:request error:nil];

    for (Person *p in persons) {
        NSLog(@"%@",p.name);
    }
}

5.update:

-(void)updatePerson{
    //要执行update,要先查询数据,然后对数据进行更改,再save即可
    NSFetchRequest *request = [[NSFetchRequest alloc] initWithEntityName:@"Person"];
    NSArray *persons = [_context executeFetchRequest:request error:nil];

    for (Person *p in persons) {
        //这样直接更改对象,然后再save即可
        p.name = @"hahaha";
    }
    [_context save:nil];

}

6.delete:

-(void)deletePerson{
    //要执行update,要先查询数据,然后对数据进行delete
    NSFetchRequest *request = [[NSFetchRequest alloc] initWithEntityName:@"Person"];
    NSArray *persons = [_context executeFetchRequest:request error:nil];

    for (Person *p in persons) {
        //这样直接删除,然后再save即可
        [_context delete:p];
    }
    [_context save:nil];
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值