####1.CoreData用于作数据持久化,适合大数据量的存储和查询;数据库
####2.CoreData不是数据库,CoreData能够使用数据库,XML等方式来存储数据;框架
####3.SQLite经过SQL语句操做数据,CoreData使用面向对象的方式操做数据;fetch
####4.使用CoreData操做数据,不须要写任何SQL语句;大数据
####5.使用CoreData,须要导入CoreData框架.net
(https://static.oschina.net/uploads/img/201609/03185446_dVwX.png "CoreData核心对象的关系")code
实体管理类:NSManagedObjectorm
实体描述类:NSEntityDescription对象
数据管理器类:NSManagedObjectContextip
数据链接器类:NSPersistentStoreCoordinatorget
数据模型器类:NSManagedObjectModel
1.如果新建的工程,选择空白应用程序,next
2.勾选Use Core Data选项
此时生成的工程文件AppDelegate中,会自动生成被管理的数据上下文等相关代码
// 一、添加一个实体对象到 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]; }
// 一、建立一个取值请求 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; // 二、在上下文中执行取值请求 NSArray *objects = [delegate.managedObjectContext executeFetchRequest:request error:&error]; [objects enumerateObjectsUsingBlock:^(id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { User *user = (User *)obj;
// 一、查询 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];
// 一、查询 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];