iOS coreData的使用

创建模型

1 创建.xcdatamodeld文件
请添加图片描述

2 添加entity, 并设置属性
请添加图片描述

3 create NSManagedObject Subclass ,如图
请添加图片描述

获取coredata 操作上下文环境

+ (NSManagedObjectContext *)coredatagetContext {
    
    
    
    
    NSURL *modelURL = [[NSBundle mainBundle] URLForResource:@"Model" withExtension:@"momd"];
    //根据模型文件创建模型对象
    NSManagedObjectModel *model = [[NSManagedObjectModel alloc] initWithContentsOfURL:modelURL];
    
    
    //2、创建持久化存储助理:数据库
    //利用模型对象创建助理对象
    NSPersistentStoreCoordinator *store = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:model];
    
    //数据库的名称和路径
    NSString *docStr = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
    NSString *sqlPath = [docStr stringByAppendingPathComponent:@"coreData.sqlite"];
    NSLog(@"数据库 path = %@", sqlPath);
    NSURL *sqlUrl = [NSURL fileURLWithPath:sqlPath];
    
    NSError *error = nil;
    //设置数据库相关信息 添加一个持久化存储库并设置存储类型和路径,NSSQLiteStoreType:SQLite作为存储库
    [store addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:sqlUrl options:@{
    
    NSMigratePersistentStoresAutomaticallyOption:@YES,NSInferMappingModelAutomaticallyOption:@YES} error:&error];
    
    if (error) {
    
    
        NSLog(@"添加数据库失败:%@",error);
    } else {
    
    
        NSLog(@"添加数据库成功");
    }
    
    //3、创建上下文 保存信息 操作数据库
    
    NSManagedObjectContext *context = [[NSManagedObjectContext alloc] initWithConcurrencyType:NSMainQueueConcurrencyType];
    
    //关联持久化助理
    context.persistentStoreCoordinator = store;
    return context;
   // _context = context;
}

基本操作

写入

+ (void)coreUpdateWithName:(NSString *)name gender:(NSString *)gender
{
    
    
        NSManagedObjectContext *context = [self  coredatagetContext];
        
        NSArray *array = [self coreDatagetStudent];
        
        BOOL add = YES;
        for (Student *person in array) {
    
    
            if ([person.name isEqualToString:NAME]) {
    
    
                add = NO;
                break;
            }
        }
        if (add == NO) {
    
    
            return;
        }
        
        Student *student = [NSEntityDescription
                             insertNewObjectForEntityForName:@"Student"
                             inManagedObjectContext:context];
   		 student.name = name;
    	student.gender = gender;
  
        //   3.保存插入的数据
        NSError *error = nil;
        if ([context save:&error]) {
    
    
            NSLog(@"掺入成年公插入成功弄");
            
            NSArray * array = [MyTool coreDatagetStudent];
            NSLog(@"插入后拆入喉%@",array);
                }else{
    
    
            NSLog(@"插入失败插入失败");
        }
     
}

查询

+ (NSArray *)coreDatagetStudent
    NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"Student"];
    NSManagedObjectContext *context = [self  coredatagetContext];
    NSArray *resArray = [context executeFetchRequest:request error:nil];
    return resArray;
}

修改

   NSManagedObjectContext *context = [self  coredatagetContext];
    NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"Student"];
    
    NSPredicate *pre = [NSPredicate predicateWithFormat:@"name = %@", name];
    request.predicate = pre;
    
    //发送请求
    NSArray *resArray = [context executeFetchRequest:request error:nil];
    
    //修改
    for (Student *stu in resArray) {
    
    
        stu.account = account;
    }
  
    //保存
    NSError *error = nil;
    if ([context save:&error]) {
    
    
        NSLog(@"更改成功饿");
//        [self alertViewWithMessage:@"更新所有帅哥的的名字为“且行且珍惜_iOS”"];
    }else{
    
    
       // NSLog(@"更新数据失败, %@", error);
    }

猜你喜欢

转载自blog.csdn.net/LIUXIAOXIAOBO/article/details/120982400