CoreData

CoreData中常见的类

NSManagedObject:对象类(Person)
NSEntityDescription:描述实体属性的类(age,gender),这些属性都是对象
NSManagedObjectModel:数据模型类(心形)
NSPersistentStoreCoordinator:数据连接器类,负责连接源数据(相当于搬运工)
NSManagedObjectContext:数据管理器类 ,增、删、改、查都要用该类,保存修改后的值(记录)(相当于老板,负责指挥)承上启下


//coreData的用法

1.创建一个新工程,将coreData那一项勾选

2.点击coreDataTest.xcdatamodeld,创建一个实体


3.command+N在iOS的coreData->NSManagedObject subclass创建实体和描述属性


4.给要创建实体类下打钩,一直点确定,则会出现四个文件,实体类创建成功

5.AppDelegate类中会出现coreData相应需要用的对象

6.创建实体对象(增加)

  //创建student对象
    //创建描述类对象
    NSEntityDescription *entityDescription =  [NSEntityDescription entityForName:@"Student" inManagedObjectContext:self.managedObjectContext];
    
    //创建实体对象
    _student = [[Student alloc] initWithEntity: entityDescription insertIntoManagedObjectContext:self.managedObjectContext];
    
    
    //设置属性
    _student.name = @"李大泽";
    _student.age = [NSNumber numberWithInt:18];
    _student.sex = @"男";
    _student.address = @"dffffaewwf";
    
    //保存操作,该方法是AppDelegate方法中定义的保存方法
    [self saveContext];

  

    //获取AppDelegate里面的被管理对象上下文
    
    //获取AppDelegate对象
    _appdelegate = [UIApplication sharedApplication].delegate;
    
    //获取被管理对象上下文
    _context = _appdelegate.managedObjectContext;

   

7.查询

有代码片段,不需要自己打:fetch...

 
    //搜索类
    NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
    
    //实体描述类
    NSEntityDescription *entity = [NSEntityDescription entityForName:@"Student" inManagedObjectContext:_context];
    
    [fetchRequest setEntity:entity];

    
    //查找条件(此处可省略)
//    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"name = %@",@"李大泽"];
//    [fetchRequest setPredicate:predicate];
//    
    

    //排序(按年龄升序排序)
    NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"age"     ascending:YES];
    [fetchRequest setSortDescriptors:[NSArray arrayWithObjects:sortDescriptor, nil]];
    
    //执行查询请求
    //此时查找的数据都存在fetchedObjects该数组中
    NSError *error = nil;
    NSArray *fetchedObjects = [_context executeFetchRequest:fetchRequest error:&error];
    
    
    if (fetchedObjects == nil) {
        
        NSLog(@"查找失败");
        
    }
    else{
        
        
        //将获得的学生数组给数组
        //方法一:此时相当于拷贝了一份给array
        [self.array addObjectsFromArray:fetchedObjects];
        
        //方法二:此时array和fetchedObjects指向一个空间,不安全
//        self.array = (NSMutableArray *)
//        fetchedObjects;

        
        //取出数组里面的Student对象
        Student *s = fetchedObjects[0];
        NSLog(@"查找成功,查找到学生,姓名:%@,性别:%@,年龄:%@,地址:%@",s.name,s.sex,s.age,s.address);
        
        
        //NSLog(@"查找到的学生数组是:%@",fetchedObjects);
        
    }


//修改

 //获取要修改的学生对象
    Student *s = _array[0];
    
    s.name = @"玛利亚";
    s.age = [NSNumber numberWithInt:10];
    s.sex = @"未知";
    
    //保存操作
    //方法一:直接用上下文对象的保存方法
    [self.context save:nil];
    
    //方法二:用AppDelegate的保存方法
   // [_appdelegate saveContext];
    
    
    //查找修改后的学生对象信息
    [self searchStudent:nil];

//删除

//查找到要删除的学生
    Student *deleteStu = _array[0];
    
    //删除学生
    [_context deleteObject:deleteStu];
    
    //保存操作
    [self.context save:nil];
    
    
    NSLog(@"删除成功");
}



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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值