关闭

114 CoreData基本使用

标签: coredata基本
162人阅读 评论(0) 收藏 举报

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
猜你在找
【直播】机器学习&数据挖掘7周实训--韦玮
【套餐】系统集成项目管理工程师顺利通关--徐朋
【直播】3小时掌握Docker最佳实战-徐西宁
【套餐】机器学习系列套餐(算法+实战)--唐宇迪
【直播】计算机视觉原理及实战--屈教授
【套餐】微信订阅号+服务号Java版 v2.0--翟东平
【直播】机器学习之矩阵--黄博士
【套餐】微信订阅号+服务号Java版 v2.0--翟东平
【直播】机器学习之凸优化--马博士
【套餐】Javascript 设计模式实战--曾亮
查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:36217次
    • 积分:1510
    • 等级:
    • 排名:千里之外
    • 原创:123篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条
    文章分类