coreData初步認識
根據(jù)這片文檔可以自己初步建立一個coreData媒楼,進行簡單的數(shù)據(jù)的增、刪戚丸、改划址、查。
1限府、新建工程夺颤,記得勾選Use Core Data
如果新建工程的時候忘記勾選Use Core Data,也可以自行添加胁勺,快捷鍵command+N世澜,選擇iOS ->Core Data -> Data Model
2、建立好以后可以看到HelloCoreData.xcdatamodeld署穗,在這里可以添加實體和實體的屬性宜狐。需要注意的是:實體名字必須以大寫字母開頭。
3蛇捌、然后新建一個file抚恒,iOS -> Core Data -> NSManagedObject cubclass
4、點擊Next進入下一步络拌,勾選自己建立的工程(默認是勾選的)
5俭驮、點擊Next,勾選自己創(chuàng)建的實體(默認是勾選的)
6春贸、點擊Next以后我們就可以看到建立好的實體是有4個文件混萝。這里需要注意的是,xcode7以后建立的都是4個萍恕,而7以前的是兩個
7逸嘀、下面是代碼實現(xiàn)一個簡單的增、刪允粤、查崭倘、改,在ViewController.m文件里配置如下:
#import "ViewController.h"
#import "AppDelegate.h"
#import <CoreData/CoreData.h>
#import "Person.h"
@interface ViewController ()
{
AppDelegate *app;
}
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
app = [UIApplication sharedApplication].delegate;
[self createButtons];
}
- (void)createButtons
{
NSArray *array = @[@"增",@"刪",@"改",@"查"];
for (int i = 0; i < array.count; i++) {
UIButton *btn = [UIButton buttonWithType:UIButtonTypeRoundedRect];
btn.frame = CGRectMake(30+i*60, 100, 40, 40);
[btn setTitle:array[i] forState:UIControlStateNormal];
[btn addTarget:self action:@selector(buttonClick:) forControlEvents:UIControlEventTouchUpInside];
btn.tag = i;
[self.view addSubview:btn];
}
}
- (void)buttonClick:(UIButton *)sender
{
switch (sender.tag) {
case 0:
//增
[self coreDataAdd];
break;
case 1:
//刪
[self coreDataDelete];
break;
case 2:
//改
[self coreDataUpdate];
break;
case 3:
//查
[self coreDataSelect];
break;
default:
break;
}
}
8类垫、增 司光、查、刪悉患、改
增(添加數(shù)據(jù)残家,name、age售躁、sex)
- (void)coreDataAdd
{
Person *person = [NSEntityDescription insertNewObjectForEntityForName:@"Person" inManagedObjectContext:app.managedObjectContext];
person.name = [NSString stringWithFormat:@"小屁孩%d",arc4random()%10];
person.sex = @"女";
person.age = [NSString stringWithFormat:@"%d",arc4random()%100];
[app.managedObjectContext save:nil];
}
****
查(按條件查找)
- (void)coreDataSelect
{
//讀取這個類坞淮,根據(jù)key查找
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Person" inManagedObjectContext:app.managedObjectContext];
//建立請求
NSFetchRequest *request = [[NSFetchRequest alloc] init];
//建立請求的是哪一個類
[request setEntity:entity];
//遍歷所有的Person茴晋,獲取所有的Person信息,存儲在數(shù)組里面
NSArray *array = [app.managedObjectContext executeFetchRequest:request error:nil];
for (Person *person in array) {
NSLog(@"%@--%@--%@",person.name,person.sex,person.age);
}
}
增加后進行查找:
2016-08-15 17:52:55.881 HelloCoreData[4166:240913] 小屁孩2--女--51
2016-08-15 17:52:55.882 HelloCoreData[4166:240913] 小屁孩8--女--89
2016-08-15 17:52:55.882 HelloCoreData[4166:240913] 小屁孩8--女--34
2016-08-15 17:52:55.882 HelloCoreData[4166:240913] 小屁孩3--女--3
2016-08-15 17:52:55.882 HelloCoreData[4166:240913] 小屁孩9--女--99
2016-08-15 17:52:55.882 HelloCoreData[4166:240913] 小屁孩8--女--41
2016-08-15 17:52:55.882 HelloCoreData[4166:240913] 小屁孩0--女--33
2016-08-15 17:52:55.883 HelloCoreData[4166:240913] 小屁孩7--女--1
刪(根據(jù)條件進行刪除回窘,這里我們根據(jù)“姓名”查找刪除)
- (void)coreDataDelete
{
//讀取這個類
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Person" inManagedObjectContext:app.managedObjectContext];
//建立請求
NSFetchRequest *request = [[NSFetchRequest alloc] init];
//建立請求的是哪一個類
[request setEntity:entity];
//設置檢索條件
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"name = %@",@"小屁孩8"];
[request setPredicate:predicate];
//遍歷所有的Person诺擅,獲取所有的Person信息,存儲在數(shù)組里面
NSArray *array = [app.managedObjectContext executeFetchRequest:request error:nil];
if (array.count > 0) {
for (Person *person in array) {
//刪除
[app.managedObjectContext deleteObject:person];
}
//保存結果
[app.managedObjectContext save:nil];
NSLog(@"刪除完成");
}else{
NSLog(@"沒有檢索到數(shù)據(jù)");
}
}
刪除后進行查找
2016-08-15 17:54:25.188 HelloCoreData[4187:242212] 刪除完成
2016-08-15 17:54:27.597 HelloCoreData[4187:242212] 小屁孩2--女--51
2016-08-15 17:54:27.597 HelloCoreData[4187:242212] 小屁孩3--女--3
2016-08-15 17:54:27.597 HelloCoreData[4187:242212] 小屁孩9--女--99
2016-08-15 17:54:27.597 HelloCoreData[4187:242212] 小屁孩0--女--33
2016-08-15 17:54:27.597 HelloCoreData[4187:242212] 小屁孩7--女--1
改(按條件進行修改毫玖,這里根據(jù)“性別”進行修改)
- (void)coreDataUpdate
{
//讀取這個類
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Person" inManagedObjectContext:app.managedObjectContext];
//建立請求
NSFetchRequest *request = [[NSFetchRequest alloc] init];
//建立請求的是哪一個類
[request setEntity:entity];
//設置檢索條件
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"name != %@",@"小屁孩2"];
[request setPredicate:predicate];
//遍歷所有的Person,獲取所有的Person信息凌盯,存儲在數(shù)組里面
NSArray *array = [app.managedObjectContext executeFetchRequest:request error:nil];
if (array.count > 0) {
for (Person *person in array) {
if ([person.sex isEqualToString:@"女"]) {
person.name = @"hello";
}
}
//保存結果
[app.managedObjectContext save:nil];
NSLog(@"修改完成");
}else{
NSLog(@"沒有檢索到數(shù)據(jù)");
}
}
修改后進行查找
2016-08-15 17:55:25.742 HelloCoreData[4203:242946] 修改完成
2016-08-15 17:55:27.885 HelloCoreData[4203:242946] 小屁孩2--女--51
2016-08-15 17:55:27.886 HelloCoreData[4203:242946] hello--女--3
2016-08-15 17:55:27.886 HelloCoreData[4203:242946] hello--女--99
2016-08-15 17:55:27.886 HelloCoreData[4203:242946] hello--女--33
2016-08-15 17:55:27.886 HelloCoreData[4203:242946] hello--女--1