coreData操作数据库的步骤

1.创建一个Data Model 文件
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
2.创建一个Entity,名为MyFirstEntity
在这里插入图片描述

3.为了防止崩溃,需要做如下操作:
在这里插入图片描述
在这里插入图片描述

4.创建Data Model文件包含的Entity
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
5.在你的ViewController里面操作数据库,ViewController的代码如下:

//
//  ViewController.m
//  TestCoreData

//

#import "ViewController.h"
#import "MyFirstEntity+CoreDataClass.h"
#import <CoreData/CoreData.h>
@interface ViewController ()
@property NSManagedObjectContext * context;
@property NSMutableArray * dataSource;
@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view.
    
    [self createSqlite];
    [self insertData];
    NSLog(@"======查询数据=======");
    [self queryData];
    NSLog(@"======修改数据,before=======");
    [self updateData];
    NSLog(@"======查询修改后的数据=======");
    [self queryData];
    NSLog(@"======删除数据, before=======");
    [self deleteData];
    NSLog(@"======查询删除后的数据=======");
    [self queryData];
}

//创建数据库
- (void)createSqlite{
    
    //1.创建模型对象URL,第一个参数是MyModel.xcdatamodeld文件的文件名
    NSURL *modelURL = [[NSBundle mainBundle] URLForResource:@"MyModel" withExtension:@"momd"];
    //根据模型文件URLk来创建模型对象
    NSManagedObjectModel *model = [[NSManagedObjectModel alloc] initWithContentsOfURL:modelURL];
    
    //2.创建持久化存储助理:数据库
    //利用模型对象创建助理对象
    NSPersistentStoreCoordinator *store = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:model];
    //数据库的名称和路径
    NSString *docStr = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
    NSString *sqlPath = [docStr stringByAppendingPathComponent:@"myCoreData.sqlite"];
    NSLog(@"数据库的文件路径 = %@", sqlPath);
    NSURL *sqlUrl = [NSURL fileURLWithPath:sqlPath];
    NSError *error = nil;
    //设置数据库相关信息 添加一个持久化存储库并设置类型和路径,NSSQLiteStoreType:SQLite作为存储库
    [store addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:sqlUrl options:nil error:&error];
    if (error) {
        NSLog(@"添加数据库失败:%@",error);
    } else {
        NSLog(@"添加数据库成功");
    }
    //3.创建上下文 保存信息 对数据库进行操作
    _context = [[NSManagedObjectContext alloc] initWithConcurrencyType:NSMainQueueConcurrencyType];
    //关联持久化助理
    _context.persistentStoreCoordinator = store;
}

-(void) insertData {
    // 1.根据Entity名称和NSManagedObjectContext获取一个新的继承于NSManagedObject的子类Student
    MyFirstEntity * entity = [NSEntityDescription  insertNewObjectForEntityForName:@"MyFirstEntity"  inManagedObjectContext:_context];
    //2.根据表Student中的键值,给NSManagedObject对象赋值
    entity.name = [NSString stringWithFormat:@"csx-%d",arc4random()%100];
    entity.age = arc4random()%20;
    //3.保存插入的数据
    NSError *error = nil;
    if ([_context save:&error]) {
        NSLog(@"%@", @"数据插入到数据库成功");
    }else{
        NSLog(@"%@", [NSString stringWithFormat:@"数据插入到数据库失败, %@",error]);
    }
}
- (void)deleteData{
    //创建删除请求
    NSFetchRequest *deleRequest = [NSFetchRequest fetchRequestWithEntityName:@"MyFirstEntity"];
    //删除条件
    NSPredicate *pre = [NSPredicate predicateWithFormat:@"age < %d", 20];
    deleRequest.predicate = pre;
    //返回需要删除的对象数组
    NSArray *deleArray = [_context executeFetchRequest:deleRequest error:nil];
    //从数据库中删除
    for (MyFirstEntity *entity in deleArray) {
        [_context deleteObject:entity];
    }
    
    NSError *error = nil;
    //保存--记住保存
    if ([_context save:&error]) {
        NSLog(@"删除 age < 10 的数据");
    }else{
        NSLog(@"删除数据失败, %@", error);
    }
}
//更新,修改
- (void)updateData{
    //创建查询请求
    NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"MyFirstEntity"];
    NSPredicate *pre = [NSPredicate predicateWithFormat:@"age > %d", 1];
    request.predicate = pre;
    
    //发送请求
    NSArray *resArray = [_context executeFetchRequest:request error:nil];
    
    //修改
    for (MyFirstEntity *entity in resArray) {
        entity.name = @"haha";
    }
    
    //保存
    NSError *error = nil;
    if ([_context save:&error]) {
        NSLog(@"把age>1 的MyFirstEntity实例的name更新为 haha");
    }else{
        NSLog(@"更新数据失败, %@", error);
    }
}
//查询
-(void)queryData {
    //创建查询请求
    NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"MyFirstEntity"];
    //查询条件
    NSPredicate *pre = [NSPredicate predicateWithFormat:@"age > %d", 1];
    request.predicate = pre;
    
    
    //发送查询请求
    NSArray *resArray = [_context executeFetchRequest:request error:nil];
    
    NSLog(@"res = %@", resArray);
}

@end

运行结果如下:

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值