IOS-Core Data

1.CoreData的概述

Core Data不是数据库, 是使 数据库、XML、二进制文件等方式来存储数据的一个框架。数据库

Core Data是iOS3以后才出现的一个框架,容许咱们以面向对象的方式储存和管理数据。使用Core Data框架,咱们能够很轻松有效地经过面向对象的接口管理数据。框架

Core Data框架提供了对象-关系映射(ORM)的功能,即可以将OC对象转化成数据,保存在SQLite3数据库文件中,也可以将保存在数据库中的数据还原成OC对象。fetch

在数据操做过程当中, 需编写任何SQL语句。code

2.CoreData核心对象的介绍

1.NSManagedObject:模型对象,或者叫实体,可理解为OC 的对象。orm

2.NSManagedObjectModel:模型文件,记录全部的模型对象及对象 的属性对象

3.NSPersistentStoreCoordinator:持久化存储协调者,是数据库和程序之间的桥梁, 用来设置数据存储的名字,位置,存储方式,和存储时机。 来执行具体的CRUD操做。接口

4.NSManagedObjectContext:对象管理上下文,用户全部的持久化操做都是经过此对象。再由此对象去调用NSPersistentStoreCoordinator对象执行具体的操做。图片

3.CoreData建立模型文件

1.在建立新的项目的时候,记得勾选Use Core Dataip

输入图片说明

2.添加Entityit

输入图片说明

3.在Entity中添加Attributes

输入图片说明

4.新建立类的时候选择NSManagedObject subclass添加你所建立的库的类

输入图片说明

4.添加实体

1.建立实体对象

NSEntityDescription *entity = [NSEntityDescription entityForName:@"User" inManagedObjectContext:delegate.managedObjectContext];

2.添加一个实体对象到 managedObjectContext 中

User *user = [NSEntityDescription insertNewObjectForEntityForName:@"User" inManagedObjectContext:delegate.managedObjectContext];
    user.userID = @"10002";
    user.userName = @"怀化";
    user.userAge = @30;
    user.userSex = @"男";
    user.saveDate = [NSDate date];
    
    保存上下文
    [delegate saveContext];

##5.Core Data的数据查询、更新与删除

1.建立取值条件与查询条件

// 建立一个取值请求
    NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"User"];
    
    // 使用谓词设置查询条件
    // request.predicate = [NSPredicate predicateWithFormat:@"userAge < 35"];
    // request.predicate = [NSPredicate predicateWithFormat:@"userName LIKE '*杨*'"];
    
    // 设置查询的条数
    request.fetchLimit = 2;
    
    // 指定到某个位置开始查询(分页效果)
    request.fetchOffset = 2;
    
    // 按某个字段升序、降序排列
    NSSortDescriptor *sort = [NSSortDescriptor sortDescriptorWithKey:@"userAge" ascending:YES];
    request.sortDescriptors = @[sort];
    
    NSError *error = nil;

2.在上下文中执行取值请求

NSArray *objects = [delegate.managedObjectContext executeFetchRequest:request error:&error];

    [objects enumerateObjectsUsingBlock:^(id  _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
       
        User *user = (User *)obj;
        
        NSLog(@"%@ %@ %@ %@ %@",user.userID, user.userName, user.userAge, user.userSex, user.saveDate);
    }];

3.更新数据

// 一、查询
    NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"User"];
    request.predicate = [NSPredicate predicateWithFormat:@"userID == '10005'"];
    
    NSArray *objects = [delegate.managedObjectContext executeFetchRequest:request error:nil];
    
    [objects enumerateObjectsUsingBlock:^(id  _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
        
        // 二、修改
       User *user = (User *)obj;
        user.saveDate = [NSDate date];
        
        // 三、保存
        [delegate saveContext];
    }];

4.删除数据

// 一、查询
    NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"User"];
    request.predicate = [NSPredicate predicateWithFormat:@"userID == '10005'"];
    
    NSArray *objects = [delegate.managedObjectContext executeFetchRequest:request error:nil];
    
    [objects enumerateObjectsUsingBlock:^(id  _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
        
        // 二、删除
        [delegate.managedObjectContext deleteObject:obj];
        
        // 三、保存
        [delegate saveContext];
    }];
相关文章
相关标签/搜索