• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

CoreData相关02 基础和运用删除、修改、模糊查询

武飞扬头像
乐事派
帮助1

删除条目

2022-03-04 16:27:23.552477 0800 CoreData实践1[72820:3059276] personName:personSomeone5009 age:0

系统想要将这些age = 0 的条目删掉。
其基本的操作是:

找到 age = 0 的条目
删除这些条目
用上下文保存
- (void)deleteSomeoneAge:(int64_t)age{
    //创建请求对象(填入的是表名称)
    NSFetchRequest* request = [NSFetchRequest fetchRequestWithEntityName:@"Person"];
    //创建过滤器
    NSPredicate* predicate = [NSPredicate predicateWithFormat:@"age=0"];
    request.predicate = predicate;
    //创建一个error用于接收错误,如果有错误的话。
    NSError* error = nil;
    //创建一个数组用于接收查询到的数据对象
    NSArray* resultArray = [self.context executeFetchRequest:request error:&error];
    
    if (error) {
        NSLog(@"查询失败,错误信息:%@",error);
    }else{
        NSLog(@"查询结果如下");
        for (Person* person in resultArray) {
            NSLog(@"personName:%@ age:%zd",person.name,person.age);
            //删除
            [self.context deleteObject:person];
        }
        //遍历删除完后,保存一下上下文
        //所有的操作都是在内存中的,最后我们需要提交到数据库更新一下
        [self.context save:&error];
        if(error){
            NSLog(@"数据删除保存失败,失败信息:%@",error);
        }else{
            NSLog(@"数据删除保存完成");
        }
    }
}
学新通

运行结果:

2022-03-04 16:47:03.009790 0800 CoreData实践1[73184:3074793] 查询结果如下
2022-03-04 16:47:03.010098 0800 CoreData实践1[73184:3074793] personName:personSomeone5009 age:0
2022-03-04 16:47:03.014724 0800 CoreData实践1[73184:3074793] 数据删除保存完成

修改数据

- (void)updatePersonWithName:(NSString*)name changeAge:(int64_t)age{
    //创建请求对象(填入的是表名称)
    NSFetchRequest* request = [NSFetchRequest fetchRequestWithEntityName:@"Person"];
    //创建过滤器
    NSPredicate* predicate = [NSPredicate predicateWithFormat:@"name=%@",name];
    request.predicate = predicate;
    //创建一个error用于接收错误,如果有错误的话。
    NSError* error = nil;
    //创建一个数组用于接收查询到的数据对象
    NSArray* resultArray = [self.context executeFetchRequest:request error:&error];
    if (error) {
        NSLog(@"查询失败,错误信息:%@",error);
    }else{
        NSLog(@"查询结果如下");
        for (Person* person in resultArray) {
            NSLog(@"personName:%@ age:%lld",person.name,person.age);
            //所有的操作都是在内存中的,最后我们需要提交到数据库更新一下
            person.age = 18;
            [self.context save:&error];
            if(error){
                NSLog(@"数据修改失败,失败信息:%@",error);
            }else{
                NSLog(@"数据修改完成:%@-%lld",person.name,person.age);
            }
        }
    }
}
学新通

运行结果:

2022-03-04 17:45:32.081605 0800 CoreData实践1[74137:3113654] 查询结果如下
2022-03-04 17:45:32.082136 0800 CoreData实践1[74137:3113654] personName:personSomeone8011 age:92
2022-03-04 17:45:32.087725 0800 CoreData实践1[74137:3113654] 数据修改完成:personSomeone8011-18
2022-03-04 17:45:32.088342 0800 CoreData实践1[74137:3113654] 查询结果如下
2022-03-04 17:45:32.088495 0800 CoreData实践1[74137:3113654] personName:personSomeone8011 age:18

模糊查询

模糊查询有很多中方式,其中:

BEGINSWITH 		是开头相似
ENDWITH			是结尾相似
CONTAINSWITH	是中间相似
like *			通配符方式,*后面接匹配的字符
[self fuzzyQueryDataWithNameString:@"personSomeone80"];
- (void)fuzzyQueryDataWithNameString:(NSString*)info{
    //创建请求对象(填入的是表名称)
    NSFetchRequest* request = [NSFetchRequest fetchRequestWithEntityName:@"Person"];
    //创建过滤器
    NSPredicate* predicate = [NSPredicate predicateWithFormat:@"name BEGINSWITH %@",info];
    request.predicate = predicate;
    //创建一个error用于接收错误,如果有错误的话。
    NSError* error = nil;
    //创建一个数组用于接收查询到的数据对象
    NSArray* resultArray = [self.context executeFetchRequest:request error:&error];
    if (error) {
        NSLog(@"查询失败,错误信息:%@",error);
    }else{
        NSLog(@"查询结果如下");
        if (resultArray.count) {
            for (Person* person in resultArray) {
                NSLog(@"personName:%@ age:%lld",person.name,person.age);
            }
        }else{
            NSLog(@"无");
        }
    }
}
学新通

运行结果:

2022-03-04 18:01:04.186396 0800 CoreData实践1[74453:3127878] 查询结果如下
2022-03-04 18:01:04.186900 0800 CoreData实践1[74453:3127878] personName:personSomeone8011 age:18
2022-03-04 18:01:04.187305 0800 CoreData实践1[74453:3127878] personName:personSomeone8030 age:24

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhgcbcbh
系列文章
更多 icon
同类精品
更多 icon
继续加载