美文网首页
41.CoreData数据库操作

41.CoreData数据库操作

作者: bytebytebyte | 来源:发表于2020-11-10 09:23 被阅读0次
CoreData增删改查   


messageFetchRequest.predicate = [NSPredicate predicateWithFormat:@"toAccount == '130000011111'"];

1.增加一条数据

    NSEntityDescription *enity = [NSEntityDescription entityForName:@"Contact" inManagedObjectContext:self.managedObjectContext];
    Contact *oneContact = [[Contact alloc]initWithEntity:enity insertIntoManagedObjectContext:self.managedObjectContext];
    oneContact.iid = [NSString stringWithFormat:@"%lu", (unsigned long)containsContact.count];
    oneContact.account = realUserName;
    oneContact.status = [[item attributeForName:@"subscription"]stringValue];
    [self.managedObjectContext save:nil];


2.删除一条数据

//不推荐使用谓词,有的时候并不能精确度的找到

    NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"Contact"];
//    request.predicate = [NSPredicate predicateWithFormat:@"account = '%@'",shieldUsername];
    NSArray *datas = [self.managedObjectContext executeFetchRequest:request error:nil];
    for (Contact *model in datas) {
        if ([model.account isEqualToString:shieldUsername]) {
            [self.managedObjectContext deleteObject:model];
            NSLog(@"删除成功");
        }
    }
    if ([self.managedObjectContext save:nil]) {
        NSLog(@"保存成功");
    }
    else
    {
        NSLog(@"删除失败");
    }

3.修改一条数据,先查后改

        UITextField *textF = alert.textFields.firstObject;
        NSFetchRequest *fetchRequest = [NSFetchRequest fetchRequestWithEntityName:@"Contact"];
        fetchRequest.predicate = [NSPredicate predicateWithFormat:@"account == %@",self.contactModel.account];
        NSArray *result = [self.managedObjectContext executeFetchRequest:fetchRequest error:nil]; //_managedObjectContext
        for (Contact *model in result) {
            model.name = textF.text;
            _contactModel = model;
            [self.tableView reloadData];
        }
        [_managedObjectContext save:nil];

或

NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"RecentSession"];
        request.predicate = [NSPredicate predicateWithFormat:@"fromNumber == %@",weakSelf.contactModel.account];
        NSArray *arr = [weakSelf.managedObjectContext executeFetchRequest:request error:nil];
        RecentSession *recentModel = arr.firstObject;
        if (arr.count != 0) {
            recentModel.fromName = textF.text;
        }
        [weakSelf.managedObjectContext save:nil];

4.全表查询

NSFetchRequest *fetchRequest = [NSFetchRequest fetchRequestWithEntityName:@"Contact"];

    
    NSArray *containsContact = [self.managedObjectContext executeFetchRequest:fetchRequest error:nil];
    for (Contact *obj in containsContact) {
        if ([obj.account isEqualToString:realUserName]) {
            return;
        }


5.条件查询

                NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"Pre_Message"];
                request.predicate = [NSPredicate predicateWithFormat:@"other_msg_id == %@",msgID];  //注意此处@"other_msg_id == %@"
                NSArray *arr = [self.managedobjectContext executeFetchRequest:request error:nil];


6.谓词的使用

-(void)sendFailMessage
{
    NSFetchRequest *fetchRequest = [[NSFetchRequest alloc]initWithEntityName:@"Pre_Message"];
    fetchRequest.predicate = [NSPredicate predicateWithFormat:@"msgFrom == 'me' and myAccount == %@ and msgType = '0' and msgStatus == 'f' or msgStatus == %@",[[NSUserDefaults standardUserDefaults] objectForKey:@"userPhone"],@""];
    NSArray *arr = [self.objectContext executeFetchRequest:fetchRequest error:nil];
    if (arr.count > 0) {
        NSArray *orderArray = [self orderedTimeWithArray:arr];
        for (Pre_Message *model in orderArray) {
            [[XmppMessageSenderHelper shareSendMessageHelper] sendMessageToJid:[NSString stringWithFormat:@"%@@casing.com",model.toAccount] type:model.msgType context:model.msg1 msgId:model.iid sizelong:nil];
            if ([orderArray indexOfObject:model] >= 100) {
                break;
            }
        }
    }
    
}





相关文章

  • 41.CoreData数据库操作

  • MySQL数据库管理使用

    RPM安装MySQL 启动数据库操作: 重启数据库操作: 停止数据库操作: 查看数据库状态: 登录数据库操作: 退...

  • python 教程笔记day10

    Python3 MySQL 数据库连接 数据库连接 创建数据库表 数据库插入操作 数据库查询操作 数据库更新操作 ...

  • PHP笔记

    表单 数据库 session 数据库操作1 数据库操作2 .htaccess

  • Statement执行DQL语句

    一.数据库插入操作 二.数据库跟新操作 三.删除操作

  • node

    数据库(database) 概念 数据库常用类型 Node 操作数据库 数据库常用操作

  • MySQL之操作数据库

    二、操作数据库 操作数据库——>操作数据库中的表——>操作数据库中表的数据注:所有语句都要用;结尾。 1.操作数据...

  • 数据库的简单操作

    操作数据库 操作数据库 > 操作数据库中的表 > 操作数据库中表的数据 MySQL关键字不分大小写 2.1 操作数...

  • SQL之DDL

    DDL是用于操作数据库以及表结构的语句 数据库操作 数据类型 表操作 一.数据库操作 查看所有数据库:SHOW D...

  • NodeJs

    NodeJs 数据库(database) 概念 数据库常用类型 Node操作数据库 数据库常用操作

网友评论

      本文标题:41.CoreData数据库操作

      本文链接:https://www.haomeiwen.com/subject/bozfmktx.html