CoreData

使用coreadata第一步便是coredata的创建.

123.gif
 //
//  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


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容