数据库操作工具类

- (void)openDB{
    //加载模型数据文件---即在工程中创建的.xcdatamodeld文件,但在实际的路径中,以momd为后缀
    NSURL *url = [[NSBundle mainBundle] URLForResource:@"Evaluate" withExtension:@"momd"];
    
    //创建MOM
    NSManagedObjectModel *mom = [[NSManagedObjectModel alloc] initWithContentsOfURL:url];
    
    //创建PSC
    NSPersistentStoreCoordinator *psc = [[NSPersistentStoreCoordinator alloc]initWithManagedObjectModel:mom];
    
    //为PSC指定操作的数据库
    //获取路径
    NSString *filePath = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents/Evaluate.sqlite"];
    NSLog(@"%@",filePath);
    //转化为url
    NSURL *dbUrl = [NSURL fileURLWithPath:filePath];
    
    NSError *error = nil;
    //执行打开数据库操作
    [psc addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:dbUrl options:nil error:&error];
    
    if (error) {
        NSLog(@"打开数据库失败");
    }else{
        NSLog(@"打开数据库成功");
    }
    
    //创建数据库操作对象
    self.context = [[NSManagedObjectContext alloc] init];
    self.context.persistentStoreCoordinator = psc;
}




#pragma mark--创建MO对象
- (NSManagedObject *)createMO:(NSString *)entityName{
    if (entityName.length == 0) {
        return nil;
    }
    //根据传的实体名创建MO对象--》self.context必须在打开数据库时初始化
    NSManagedObject *mo = [NSEntityDescription insertNewObjectForEntityForName:entityName inManagedObjectContext:self.context];
    return mo;
}


#pragma mark--1.添加对象
- (void)saveObject:(NSManagedObject *)mo{
    [self.context insertObject:mo];
    NSError *error = nil;
    if ([self.context save:&error]) {
        NSLog(@"保存成功");
    }else{
        NSLog(@"保存%@失败:%@",mo, error);
    }
}

#pragma mark--2.删除数据
- (void)delegateObject:(NSManagedObject *)mo{
    if (!mo) {
        return;
    }
    
    [self.context deleteObject:mo];
    
    NSError *error = nil;
    if ([self.context save:&error]) {
        NSLog(@"删除成功");
    }else{
        NSLog(@"删除%@失败",mo);
    }
    
}

#pragma mark--3.更改数据
- (void)updateObject:(NSManagedObject *)mo{
    
    if (!mo) {
        return;
    }
    
    NSError *error = nil;
    if ([self.context save:&error]) {
        NSLog(@"更改成功");
    }else{
        NSLog(@"更改%@失败",mo);
    }
}

#pragma mark--4.查询数据(同步线程)
- (NSArray *)executeWithEntityName:(NSString *)entityName Predicate:(NSPredicate *)predicate{
    if (entityName.length == 0) {
        return nil;
    }
    
    //创建查询操作对象
    NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:entityName];
    
    //定义排序字段--按某个字段是否升序
    NSSortDescriptor *sortDesc = [NSSortDescriptor sortDescriptorWithKey:@"id" ascending:YES];
    request.sortDescriptors = @[sortDesc];
    
    //设置分页查询
    //    int page = 0;
    //    [request setFetchLimit:5];//设置每次查询的结果数量
    //    [request setFetchOffset:page * 5];//设置查询开始的位置
    
    //定义查询条件
    request.predicate = predicate;
    
    //执行查询操作
    NSArray *resultArr = [self.context executeFetchRequest:request error:nil];
    
    return resultArr;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值