使用coreadata第一步便是coredata的创建.
//
// ViewController.m
// coredata
//
// Created by zhaoguodong on 16/6/24.
// Copyright © 2016年 zhaoguodong. All rights reserved.
//
#import "ViewController.h"
#import "STUDENT.h"
#import "TEACHER.h"
@interface ViewController ()
//联系上下文
@property (nonatomic ,strong)NSManagedObjectContext *context;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
//初始化 NSManagedObjectContext
self.context = [[NSManagedObjectContext alloc]initWithConcurrencyType:NSMainQueueConcurrencyType];
//关联数据库
NSManagedObjectModel *model = [[NSManagedObjectModel alloc]initWithContentsOfURL:[[NSBundle mainBundle] URLForResource:@"Model" withExtension:@"momd"]];
//通过文件模型去初始化数据持久化助理
NSPersistentStoreCoordinator *store = [[NSPersistentStoreCoordinator alloc]initWithManagedObjectModel:model];
//创建文件路径
NSString *filePath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES).lastObject stringByAppendingPathComponent:@"model.sqlite"];
NSLog(@"%@",filePath);
//关联路径
//如果需要支持版本迭代的话那么要在options设置@{NSMigratePersistentStoresAutomaticallyOption:@YES,NSInferMappingModelAutomaticallyOption:@YES}
//如果不想迭代设置为options nil
[store addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:[NSURL fileURLWithPath:filePath] options:@{NSMigratePersistentStoresAutomaticallyOption:@YES,NSInferMappingModelAutomaticallyOption:@YES} error:nil];
self.context.persistentStoreCoordinator = store;
// Do any additional setup after loading the view, typically from a nib.
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
#pragma mark ---------coreDate的使用需要注意,所有的增删改操作完成之后需要保存一下---
#增
- (IBAction)add:(UIButton *)sender {
//创建一个学生
STUDENT *stu1 = [NSEntityDescription insertNewObjectForEntityForName:@"STUDENT" inManagedObjectContext:self.context];
stu1.name = @"光头强";
stu1.age = @26;
STUDENT *stu2 = [NSEntityDescription insertNewObjectForEntityForName:@"STUDENT" inManagedObjectContext:self.context];
stu2.name = @"🐻大";
stu2.age = @6;
STUDENT *stu3 = [NSEntityDescription insertNewObjectForEntityForName:@"STUDENT" inManagedObjectContext:self.context];
stu3.name = @"🐻二";
stu3.age = @4;
STUDENT *stu4 = [NSEntityDescription insertNewObjectForEntityForName:@"STUDENT" inManagedObjectContext:self.context];
stu4.name = @"图图";
stu4.age = @1;
//创建一个老师
TEACHER *teac1 = [NSEntityDescription insertNewObjectForEntityForName:@"TEACHER" inManagedObjectContext:self.context];
teac1.name = @"🐯大师";
teac1.sex = @"雄性";
//吧学生给老师
teac1.myStudent =[NSSet setWithObjects:stu1,stu2,stu3,stu4, nil];
[self.context save:nil];
}
#删
- (IBAction)delete:(id)sender {
NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"TEACHER"];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"name = %@",@"🐯大师"];
request.predicate = predicate;
NSArray *array = [self.context executeFetchRequest:request error:nil];
for (STUDENT *stu in array) {
[self.context deleteObject:stu];
[self.context save:nil];
}
}
#更新
- (IBAction)update:(UIButton *)sender {
NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"STUDENT"];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"name = %@",@"图图"];
request.predicate = predicate;
NSArray *array = [self.context executeFetchRequest:request error:nil];
for (STUDENT *stu in array) {
stu.name = @"吉吉";
[self.context save:nil];
}
}
#查找
- (IBAction)search:(UIButton *)sender {
//查询老师表
NSFetchRequest *request =[NSFetchRequest fetchRequestWithEntityName:@"TEACHER"];
NSArray *array = [self.context executeFetchRequest:request error:nil];
for (TEACHER *teac in array) {
for (STUDENT *stu in teac.myStudent) {
//teac有个属性 myStudent 里面就是他的所有学生
NSLog(@"STUDENT:name=%@ age=%@",stu.name,stu.age);
}
NSLog(@"TEACHER:name = %@ sex:%@",teac.name,teac.sex);
}
}
@end