博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
CoreData的简单使用
阅读量:7013 次
发布时间:2019-06-28

本文共 3043 字,大约阅读时间需要 10 分钟。

  hot3.png

 一.CoreData

####1.CoreData用于做数据持久化,适合大数据量的存储和查询;

####2.CoreData不是数据库,CoreData可以使用数据库,XML等方式来存储数据;

####3.SQLite通过SQL语句操作数据,CoreData使用面向对象的方式操作数据;

####4.使用CoreData操作数据,不需要写任何SQL语句;

####5.使用CoreData,需要导入CoreData框架

二.CoreData核心对象

( "CoreData核心对象的关系")

NSManagedObject:模型对象,或者叫实体(entity),可理解为OC⾥里的对象。

NSManagedObjectModel:模型⽂文件(.xcdatamodeld),记录所有的模型对象及对象的属性.

NSPersistentStoreCoordinator:持久化存储协调者,是数据库和程序之间的桥梁, ⽤用来设置数据存储的名字,位置,存储⽅方式,和存储时机。⽤用来执⾏行具体的CRUD操作。

NSManagedObjectContext:对象管理上下⽂文,⽤用户所有的持久化操作都是通过此 对象。再由此对象去调⽤用NSPersistentStoreCoordinator对象执⾏行具体的操作。

实体管理类:NSManagedObject

实体描述类:NSEntityDescription

数据管理器类:NSManagedObjectContext

数据连接器类:NSPersistentStoreCoordinator

数据模型器类:NSManagedObjectModel

构建流程:

1.若是新建的工程,选择空白应用程序,next

2.勾选Use Core Data选项

此时生成的工程文件AppDelegate中,会自动生成被管理的数据上下文等相关代码

1.添加元素:

// 1、添加一个实体对象到 managedObjectContext 中    User *user = [NSEntityDescription insertNewObjectForEntityForName:@"User" inManagedObjectContext:delegate.managedObjectContext];    user.userID = @"10002";    user.userName = @"怀化";    user.userAge = @30;    user.userSex = @"男";    user.saveDate = [NSDate date];        // 2、保存上下文    [delegate saveContext];}

2.查询:

// 1、创建一个取值请求    NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"User"];        // 使用谓词设置查询条件    // request.predicate = [NSPredicate predicateWithFormat:@"userAge < 35"];    // request.predicate = [NSPredicate predicateWithFormat:@"userName LIKE '*杨*'"];        // 设置查询的条数    request.fetchLimit = 2;        // 指定到某个位置开始查询(分页效果)    request.fetchOffset = 2;        // 按某个字段升序、降序排列    NSSortDescriptor *sort = [NSSortDescriptor sortDescriptorWithKey:@"userAge" ascending:YES];    request.sortDescriptors = @[sort];        NSError *error = nil;    // 2、在上下文中执行取值请求    NSArray *objects = [delegate.managedObjectContext executeFetchRequest:request error:&error];    [objects enumerateObjectsUsingBlock:^(id  _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {               User *user = (User *)obj;

3.删除:

// 1、查询    NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"User"];    request.predicate = [NSPredicate predicateWithFormat:@"userID == '10005'"];        NSArray *objects = [delegate.managedObjectContext executeFetchRequest:request error:nil];        [objects enumerateObjectsUsingBlock:^(id  _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {                // 2、删除        [delegate.managedObjectContext deleteObject:obj];                // 3、保存        [delegate saveContext];

4.更新:

// 1、查询    NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"User"];    request.predicate = [NSPredicate predicateWithFormat:@"userID == '10005'"];        NSArray *objects = [delegate.managedObjectContext executeFetchRequest:request error:nil];        [objects enumerateObjectsUsingBlock:^(id  _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {                // 2、修改       User *user = (User *)obj;        user.saveDate = [NSDate date];                // 3、保存        [delegate saveContext];

转载于:https://my.oschina.net/baqie/blog/741969

你可能感兴趣的文章
简单的兼容的login页面
查看>>
jquery之超简单的div显示和隐藏特效demo
查看>>
Oracle:PL/SQL 中如何使用Array
查看>>
[js - 算法可视化] 汉诺塔(Hanoi)演示程序
查看>>
Note:JSON
查看>>
分享.NET 3.0的书籍下载(持续更新中)
查看>>
几道有意思的逻辑分析题
查看>>
apache svn下新建一个项目
查看>>
高效 JavaScript 单元测试(转)
查看>>
[Windows Azure] What is a cloud service?
查看>>
使用C#的泛型队列Queue实现生产消费模式
查看>>
深入理解Tornado——一个异步web服务器
查看>>
软件架构师应该知道的97件事
查看>>
VMware、Citrix和Microsoft虚拟化技术详解与应用实践
查看>>
SublimeText3使用技巧总结
查看>>
微软称Silverlight技术领先于HTML5
查看>>
SQL SERVER普通用户需要什么权限才能执行sp_configure命令
查看>>
十个开源的Javascript框架
查看>>
Simple guide to Java Message Service (JMS) using ActiveMQ
查看>>
从输入 URL 到页面加载完的过程中都发生了什么事情?
查看>>