CoreData使用

    /*
     数据在数据库中的保存形式 : 对象所有的属性都以字段形式保存在数据库中。
     字段形式 : Z+属性名(全部大写)

     三个系统自定义的字段
     Z_PK   primay key  主键,从1开始,自动增长
     Z_ENT  表索引,表示当前实体在实体描述文件中的位置。
     Z_OPT  操作数,初始状态为1,每进行一次修改次+1

    */
通过新建Core Data类型里的NSManagedObject subclass来创建模型对象类,自动生成实体描述所设置的属性

CoreData的使用

头文件导入和全局变量
导入CoreData.h头文件
#import <CoreData/CoreData.h>
{
    NSManagedObjectContext *_objectContext;   
}
创建图形上下文
    //1 创建数据库文件路径
    NSString *dataBaseFilePath = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents/DataBase.sqlite"];
    NSURL *url = [NSURL fileURLWithPath:dataBaseFilePath];

    //2  创建实体模型描述文件
    //(1)通过新建Core Data类型里的Data Model文件创建数据模型,可设置属性名和类型
    //(2)通过新建Core Data类型里的NSManagedObject subclass来创建模型对象类,自动生成设置的属性
    //3  获取实体模型描述文件路径
    NSURL *entityFilePath = [[NSBundle mainBundle] URLForResource:@"User" withExtension:@"momd"];
    //4通过实体模型描述文件创建模型对象
    NSManagedObjectModel *model = [[NSManagedObjectModel alloc] initWithContentsOfURL:entityFilePath];
    //5创建数据持久化协调器(PSC)
    NSPersistentStoreCoordinator *psc = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:model];
    //6创建数据库实体文件
     /**
     *  添加数据持久化
     *
     *  @param storeType     数据储存类型
     *  @param configuration 储存的配置 nil
     *  @param storeURL      实体文件的URL地址
     *  @param options       选项
     *  @param error         错误提示
     *
     *  @return 实体
     */
    [psc addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:url options:nil error:&error];
    //7绑定context的协调器psc
    _context = [[NSManagedObjectContext alloc] initWithConcurrencyType:NSMainQueueConcurrencyType];
    _context.persistentStoreCoordinator = psc;
插入对象
        //通过实体描述创建对象
        User *user = [NSEntityDescription insertNewObjectForEntityForName:@"User" inManagedObjectContext:_context];
        //给对象属性赋值
        user.username = [NSString stringWithFormat:@"apel-%i", i];
        user.password = @"1234567890";
        user.age = @20;
        //保存上下文,保存数据
        [_context save:nil];
查找对象
    //创建查询请求对象
    NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"User"];
    //创建谓词(若不创建,默认搜索全部对象)
    request.predicate = [NSPredicate predicateWithFormat:@"age=%@", age];
    //执行查询条件
    NSArray *array = [_context executeFetchRequest:request error:nil];
修改某些对象属性值,先查询符合条件对象
    //创建查询请求对象
    NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"User"];
    //创建谓词(若不创建,默认搜索全部对象)
    request.predicate = [NSPredicate predicateWithFormat:@"age=%@", age];
    //执行查询条件
    NSArray *array = [_context executeFetchRequest:request error:nil];   
     for (User *user in array) {
        //修改查询到的对象的属性值
        user.password = @"ljpljpljp";
    }
    [_context save:nil];
删除某些对象,先查询符合条件对象
    //创建查询请求对象
    NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"User"];
    //创建谓词(若不创建,默认搜索全部对象)
    request.predicate = [NSPredicate predicateWithFormat:@"age=%@", age];
    //执行查询条件
    NSArray *array = [_context executeFetchRequest:request error:nil];   
    for (User *user in array) {

        [_context deleteObject:user];
    }
    //保存数据
    [_context save:nil];
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值