CoreData相关01 基础及运用:添加、查询、过滤、排序、分页

CoreData

CoreData中几乎不用写数据库操作语句就能完成数据的本地化存储。

CoreData和iOS中的模型对象相联系在一起,只需要操作模型对象的增删改查就可以完成数据的增删改查,不用写SQL语句。

CoreData的存储方式

SQLite NSSQLiteStoreType
XML NSXMLStoreType
Binary NSBinaryStoreType
内存存储 NSInMemoryStoreType

CoreData的核心对象

NSManagedObjectContext 用途:负责应用与数据库之间的交互
NSPersistentStoreCoordinator 用途:添加持久化数据库,如SQLite
NSManagedObjectModel 用途:代表CoreData的模型文件
NSEntityDescription 用途:用于描述实体

CoreData的使用步骤

创建模型文件【相当于创建数据库】
添加实体【相当于创建表】
创建实体类【相当于创建模型】
生成上下文文件,关联模型文件生成数据库
保存对象到数据库
从数据库获取对象
更新数据
删除数据

创建上下文

在这里插入图片描述配置好后,创建文件:
在这里插入图片描述在这里插入图片描述创建完成。

接着配置一下工程项目配置:
在这里插入图片描述在这里插入图片描述然后在需要用到数据库的地方importCoreData框架,才可以使用CoreData相关的API。

这个时候如果编译上有遇到重复编译相关文件的错误提示的话,那就去这个地方将相关的提示文件删除即可。
在这里插入图片描述然后再需要调用的地方生成上下文,上下文是用来关联数据文件(CoreData__1.xcdatamodeld)的。

- (void)initCoreDataContext{
   
    //生成上下文,关联数据文件
    NSManagedObjectContext* context = [[NSManagedObjectContext alloc]init];
    
    //创建模型对象:mergedModelFromBundles:nil传入nil,会将bundle下所有的模型文件都关联起来
    NSManagedObjectModel* model = [NSManagedObjectModel mergedModelFromBundles:nil];
    //创建持久化调度器:
    NSPersistentStoreCoordinator* store = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:model];
    
    //获取存储数据库的名字
    //创建获取error的变量,用于接收错误
    NSError* error = nil;
    //创建数据库的存储路径:
    NSString* doc = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
    NSString* sqlitePath = [doc stringByAppendingPathComponent:@"CoreData__1.sqlite"];
    NSURL* sqlURL = [NSURL fileURLWithPath:sqlitePath];
    NSLog(@"数据库位置:%@",sqlitePath);
    
    [store addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:sqlURL options:nil error:&error];
    
    context.persistentStoreCoordinator = store;
    self.context = context;
}

运行查看下文件路径有没有创建数据库文件:

2022-03-04 14:44:09.148267+0800 CoreData实践1[70691:2979529] 数据库位置:/Users/housnk/Library/Developer/CoreSimulator/Devices/1BD9D98C-0C2C-4F1A-8ADD-9158B1C4C938/data/Containers/Data/Application/6DBDFD9C-0D7E-449C-8B92-669DC0C0133F/Documents/CoreData__1.sqlite

用文件夹前往文件所在的位置:
在这里插入图片描述文件已生成没错。

添加数据

接着我们再创建一个方法用于添加数据:
PS:记得导入模型头文件。

#import "CoreData/Person+CoreDataProperties.h"
- (void)addInfo:(NSString*)name age:(int64_t)age{
   
    //用上下文来创建一个模型对象
    Person* person = [NSEntityDescription insertNewObjectForEntityForName:@"Person" inManagedObjectContext:self.context];
    //给该模型对象赋值
    int numberID = arc4random()%10000;
    person.name = [NSString stringWithFormat:@"personSomeone%d",numberID];
    //旧版本的CoreData会将基本数据类型如Int、Float等包装成NSNumber对象,这里是新版本不用。
    int64_t personAge = arc4random()%100;
    person.age = personAge;
    //通过上下文保存:
    //创建一个error用于接收错误,如果有错误的话。
    NSError* error = nil;
    [self.context save:&error];
    if (error) {
   
        NSLog(@"保存失败,错误信息:%@",error);
    }else{
   
        NSLog(@"保存成功");
    }
}

然后再运行一下,同样需要重新进入一下文件路径,因为每次编译后,其

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值