CoreData使用

来源:互联网 发布:淘宝描述不符退款 拆解 编辑:程序博客网 时间:2024/05/16 08:07
    /*     数据在数据库中的保存形式 : 对象所有的属性都以字段形式保存在数据库中。     字段形式 : 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
原创粉丝点击