神刀安全网

iOS基本数据库存储方式 – CoreData

CoreData

创建模型文件的过程

1.选择模板

iOS基本数据库存储方式 - CoreData

iOS基本数据库存储方式 - CoreData

2.添加实体

iOS基本数据库存储方式 - CoreData

3.添加实体的属性【注意】属性的首字母必须小写

iOS基本数据库存储方式 - CoreData

一、CoreData管理类(必备以下三个类对象)

1.CoreData数据操作的上下文,负责所有的数据操作,类似于SQLite的数据库连接句柄(NSManagedObjectContext)

(1).初始化方式

//参数“ct”的类型

//三种类型

/*

NSConfinementConcurrencyType 默认值,允许在特定的线程中执行,几乎不用

NSPrivateQueueConcurrencyType  只会在主线程中执行

NSMainQueueConcurrencyType 允许在子线程中执行

*/

– (instancetype)initWithConcurrencyType:(NSManagedObjectContextConcurrencyType)ct 

(2).设置持久化存储协调器(属性)

persistentStoreCoordinator

2.管理模型(NSManagedObjectModel)

(1).一般都需要先获取获取模型文件的URL地址

/*

参数一:模型文件的名字

参数二:模型文件的后缀名字

【注意】: 后缀名为.xcdatamodel的包,里面的.xcdatamodel文件,用数据模型编辑器编辑,编译后为.momd或.mom文件

*/

方法: [ [[NSBundle mainBundle] URLForResource:(NSString *)name withExtension:(NSString *)ext]

(2).初始化NSManagedObjectModel对象,加载模型文件,读取App中的所有实体信息

//参数一:该URL即指(1)中的模型文件的url路径

– (nullable instancetype)initWithContentsOfURL:(NSURL *)url;

3.持久化存储协调器(NSPersistentStoreCoordinator)

(1).初始化方式

– (instancetype)initWithManagedObjectModel:(NSManagedObjectModel *)model 

说了这么多,其实以上三个coreData核心对象只要我们在创建工程时,打上该勾选,Xcode就会帮我们搭建好框架的,接下来我们只需要知道怎么调用

iOS基本数据库存储方式 - CoreData

iOS基本数据库存储方式 - CoreData

【注意】黑色表示类名,红色表示类里面的一个属性方法

二、添加数据 : 在上下文中插入一个实体( NSManagedObject )

1.model = [NSEntityDescription insertNewObjectForEntityForName:实体名 inManagedObjectContext:管理实体的上下文];

【注意】该model必须是 NSManagedObject 的对象,一般模型都继承 NSManagedObject

2.通过Key-Value模式设置插入模型的属性值

3.将数据同步到持久化存储库 : save模型 [NSManagedObjectContext save:nil]; 

三、查询数据

1. 指向某个表的请求类

//参数entityName:即创建的实体名(在SQLite中称为表名)

NSFetchRequest *fetchRequest = [NSFetchRequest fetchRequestWithEntityName:(NSString*)entityName];

2. 添加查询条件

(1).条件写死在字符串中

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"age = 50"];

(2).动态传值

/*

%K 查询的字段

%@ 查询的值

*/

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"%K = %@", @"age", @(50)];

(3).排序(NSSortDescriptor)

//第一步:初始化

/*

参数一:key值,即排序根据的属性

参数二:NO为降序,YES为升序

*/

NSSortDescriptor *sort = [NSSortDescriptor sortDescriptorWithKey:@"age" ascending:NO];

//第二步:给fetchRequest添加排序方式

fetchRequest.sortDescriptors = @[sort];

(4) 范围查询

// 范围运算符(两种) : IN( 指定的值 )        BETWEEN( 开区间 )

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"age BETWEEN {15,60}"];

(5).字符串相关查找

/* 3⃣️

字符串相关: BEGINSWITH ENDSWITH CONTAINS

例:

@“ 属性名 CONTAINS[cd] ‘ 包含的字符串 ’”  // 包含某个字符串

@“ 属性名 BEGINSWITH[c] ‘ 包含的字符串 ‘"  // 以某个字符串开头

@" 属性名 ENDSWITH[d] ‘ 包含的字符串 ‘"   // 以某个字符串结束

【注意】:包含的字符串要用单引号括上

:[c] 不区分大小写

[d] 不区分发音符号即没有重音符号

[cd] 既不区分大小写,也不区分发音符号。

*/

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"username ENDSWITH ‘wu ‘"];

(6). 通配符查找

/* 

通配符: LIKE

例:

@" 属性名 LIKE[cd] ‘*er*’"    //      * 表示多个字符

@" 属性名 LIKE[cd] ‘???er*’"  //      ? 表示一个字符

*/

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"username LIKE ‘*san*’"];

…………..还有其他条件设置,我会上传一份比较综合的文档给大家

3. 设置查询条件

fetchRequest.predicate = predicate;

4. 执行请求,请求的结果被放在数组中,数组中存放的就是模型

NSArray *result = [NSManagedObjectContext executeFetchRequest:fetchRequest error:&error];

四、删除数据

//删除某一个实体(即模型)

[NSManagedObjectContext deleteObject:实体];

只要对模型做了修改,调用save方法就可以自动修改数据库中的值

[NSManagedObjectContext save:nil];

五、修改

直接修改模型属性的值

save模型

转载本站任何文章请注明:转载至神刀安全网,谢谢神刀安全网 » iOS基本数据库存储方式 – CoreData

分享到:更多 ()

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
分享按钮