设为首页 加入收藏

TOP

iOS基本数据库存储方式 - CoreData(一)
2017-10-12 18:17:07 】 浏览:6965
Tags:iOS 基本 数据库 存储 方式 CoreData

CoreData

创建模型文件的过程

1.选择模板

2.添加实体

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

一、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就会帮我们搭建好框架的,接下来我们只需要知道怎么调用

 

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

 

二、添加数据 : 在上下文中插入一个实体(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??

 

    字符串相关:BEGINSWITHENDSWITHCONTAINS

 

    例:

 

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

 

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

 

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

 

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

 

    :[c]不区分大小写

 

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

 

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

 

    */

 

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"username ENDSWIT

首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Objective-c 字典对象 下一篇UINavigationController导航控制器

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目