結(jié)構(gòu)流程
一、創(chuàng)建一個coreData應(yīng)用
1场梆、新建工程摹芙,記得勾選Use Core Data
2.AppDelegate.h 的注釋
3.CoreDataTest.xcdatamodeld
4.選擇 CoreDataTest.xcdatamodeld文件建模
二、運用 做增刪改查處理
//聲明一個AppDelegate對象屬性袱瓮,來調(diào)用類中的屬性缤骨,比如被管理對象上下文
@property (nonatomic ,strong)AppDelegate *myAppDelegate;
1.增添數(shù)據(jù)
// barbuttonIt
-(IBAction)addModel:(id)sender
{
//插入數(shù)據(jù) 創(chuàng)建實體描述對象
NSEntityDescription * description = [NSEntityDescription entityForName:@"Clothes" inManagedObjectContext:self.myAppDelegate.managedObjectContext];
//1.先創(chuàng)建一個模型對象
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?@"女裝":@"男裝";
//插入數(shù)據(jù)原數(shù)組
[self.dataSource addObject:cloth];
//插入UI
[self.tableView insertRowsAtIndexPaths:@[[NSIndexPath indexPathForRow:self.dataSource.count - 1 inSection:0]] withRowAnimation:UITableViewRowAnimationLeft];
//對數(shù)據(jù)管理器中的更改,進(jìn)行永久存儲
[self.myAppDelegate saveContext];
}
2.刪除數(shù)據(jù)
Clothes *cloth = self.dataSource[indexPath.row];
[self.dataSource removeObject:cloth];
//刪數(shù)據(jù)管理器中的數(shù)據(jù)
[self.myAppDelegate.managedObjectContext deleteObject:cloth];
//將進(jìn)行更改過后的永久保存
[self.myAppDelegate saveContext];
//刪除單元格 UITableViewRowAnimationFade 減淡動畫
[self.tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade];
3.改數(shù)據(jù)
// 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.查詢數(shù)據(jù)
//初始化數(shù)組
self.dataSource = [NSMutableArray array];
self.myAppDelegate = [UIApplication sharedApplication].delegate;
//查詢數(shù)據(jù)
// 1, NSFetchRequest
NSFetchRequest * request = [[NSFetchRequest alloc]initWithEntityName:@"Clothes"];
//2.設(shè)置排序
//2.1 創(chuàng)建排序描述對象 (根據(jù)什么排序 升序尺借、絳序) 多個排序?qū)ο?NSSortDescriptor * sortDescriptor = [[NSSortDescriptor alloc]initWithKey:@"price" ascending:YES];
request.sortDescriptors = @[sortDescriptor];
//執(zhí)行這個查詢請求
NSError * error = nil; //查詢錯誤信息
NSArray * result = [self.myAppDelegate.managedObjectContext executeFetchRequest:request error:&error];
//給數(shù)據(jù)源數(shù)組添加數(shù)據(jù)
[self.dataSource addObjectsFromArray:result];
三绊起、版本控制
1.選擇 CoreDataTest.xcdatamodeld文件 點擊
2..選擇 CoreDataTest.xcdatamodeld文件 選擇當(dāng)前創(chuàng)建的新版本
3.創(chuàng)建映射文件
第一步選擇老的模型版本,第二步選擇老的模型文件
4.更改AppDelegate.m文件
在- (NSPersistentStoreCoordinator *)persistentStoreCoordinator 方法中添加代碼
NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys:
[NSNumber numberWithBool:YES],NSMigratePersistentStoresAutomaticallyOption,
[NSNumber numberWithBool:YES],NSInferMappingModelAutomaticallyOption, nil];
帶入options
5.把老的可視化建模的model類刪除燎斩,選擇 CoreDataTest.xcdatamodeld文件創(chuàng)建新的model 方法同上1.4