CoreData 学习笔记

结构流程

CoreData 学习笔记_第1张图片
1115674-6f67652a5b79322e-1.png

一、创建一个coreData应用

1、新建工程,记得勾选Use Core Data

CoreData 学习笔记_第2张图片
3F901105-121E-456E-B0E5-E91A3C6E0C65.png

2.AppDelegate.h 的注释

CoreData 学习笔记_第3张图片
Paste_Image.png

3.CoreDataTest.xcdatamodeld

CoreData 学习笔记_第4张图片
FB66DC96-16BB-4BAA-A0CE-A9C62B67FB72.jpeg

4.选择 CoreDataTest.xcdatamodeld文件建模

CoreData 学习笔记_第5张图片
Paste_Image.png

二、运用 做增删改查处理

//声明一个AppDelegate对象属性,来调用类中的属性,比如被管理对象上下文

@property (nonatomic ,strong)AppDelegate *myAppDelegate;

 1.增添数据
 //  barbuttonIt

-(IBAction)addModel:(id)sender
{
//插入数据  创建实体描述对象
NSEntityDescription * description = [NSEntityDescription  entityForName:@"Clothes"  inManagedObjectContext:self.myAppDelegate.managedObjectContext];

//1.先创建一个模型对象
Clothes * cloth = [[Clothes alloc]initWithEntity:description insertIntoManagedObjectContext:self.myAppDelegate.managedObjectContext];

cloth.name = @"Puma";
int price = arc4random()%1000+1;
cloth.price = [NSNumber numberWithInt:price];
cloth.type = price>500?@"女装":@"男装";

//插入数据原数组
[self.dataSource addObject:cloth];

//插入UI
[self.tableView insertRowsAtIndexPaths:@[[NSIndexPath indexPathForRow:self.dataSource.count - 1 inSection:0]] withRowAnimation:UITableViewRowAnimationLeft];

//对数据管理器中的更改,进行永久存储
[self.myAppDelegate saveContext];
}

2.删除数据

    Clothes *cloth = self.dataSource[indexPath.row];
    [self.dataSource removeObject:cloth];
    
    //删数据管理器中的数据
    [self.myAppDelegate.managedObjectContext deleteObject:cloth];
    
    //将进行更改过后的永久保存
    [self.myAppDelegate saveContext];
    
    //删除单元格  UITableViewRowAnimationFade 减淡动画
    [self.tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade];

3.改数据

// 1.先找到模型对象
Clothes * cloth = self.dataSource[indexPath.row];

if ([cloth.name isEqualToString:@"Puma"])
{
    cloth.name = @"adidas";
}
else
{
    cloth.name = @"NIKE";
}

//刷新UI 单元格
[self.tableView reloadRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationAutomatic];
//永久保存
[self.myAppDelegate saveContext];

4.查询数据

//初始化数组
self.dataSource = [NSMutableArray array];
self.myAppDelegate = [UIApplication sharedApplication].delegate;

//查询数据
// 1,  NSFetchRequest
NSFetchRequest * request = [[NSFetchRequest alloc]initWithEntityName:@"Clothes"];

//2.设置排序
//2.1 创建排序描述对象 (根据什么排序  升序、绛序) 多个排序对象
NSSortDescriptor * sortDescriptor = [[NSSortDescriptor alloc]initWithKey:@"price" ascending:YES];
request.sortDescriptors = @[sortDescriptor];

//执行这个查询请求
NSError * error  = nil; //查询错误信息

NSArray * result =  [self.myAppDelegate.managedObjectContext executeFetchRequest:request error:&error];

//给数据源数组添加数据
[self.dataSource addObjectsFromArray:result];

三、版本控制

1.选择 CoreDataTest.xcdatamodeld文件 点击

CoreData 学习笔记_第6张图片
Paste_Image.png

2..选择 CoreDataTest.xcdatamodeld文件 选择当前创建的新版本

CoreData 学习笔记_第7张图片
Paste_Image.png

3.创建映射文件

第一步选择老的模型版本,第二步选择老的模型文件


CoreData 学习笔记_第8张图片
Paste_Image.png
CoreData 学习笔记_第9张图片
Paste_Image.png

4.更改AppDelegate.m文件

在- (NSPersistentStoreCoordinator *)persistentStoreCoordinator 方法中添加代码

 NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys:
                         [NSNumber numberWithBool:YES],NSMigratePersistentStoresAutomaticallyOption,
                         [NSNumber numberWithBool:YES],NSInferMappingModelAutomaticallyOption, nil];

带入options


CoreData 学习笔记_第10张图片
Paste_Image.png

5.把老的可视化建模的model类删除,选择 CoreDataTest.xcdatamodeld文件创建新的model 方法同上1.4

完!

练习demo

你可能感兴趣的:(CoreData 学习笔记)