在CoreData实际使用中,分页查询和模糊查询是必不可少的,接下来演示一下:

首先

// 1.创建模型文件 (相当于一个数据库里的表)

// New File ———— CoreData ———— Data Model ———— Next

// 2.添加实体 (相当于一张表)

// 找到我们创建的模型文件(xxx.xcdatamodeld,我创建的叫School.xcdatamodeld)————Add
Entity ———— 添加表内属性(这边我添加2个属性(name,age))


// 3.创建实体类

// New File ———— CorData ———— NSManagedobject subclass ————Next(记得选择需要关联的表)这样就会自动生成相应的模型

// 4.生成上下文 关联模型文件生成数据库(关联的时候,如果本地没有数据库文件,CoreData会自己创建)

// 上下文,记得引用CoreData框架

NSManagedObjectContext *context= [[NSManagedObjectContext alloc]init];

// 上下文关联数据库

// model模型文件, 参数:mergedModelFromBundles:因为模型文件是资源文件,所以会放到BUNDLES里面,所以只需要写nil就可以了。

NSManagedObjectModel *model= [NSManagedObjectModel mergedModelFromBundles:nil];

// 持久化存储调度器(持久化:把数据保存在一个文件,而不是放在内存中)

NSPersistentStoreCoordinator *store=[[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:model];

// 告诉CoreData数据库的名字和路径

NSString *doc=
[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];

NSString *sqlitePath=[doc stringByAppendingPathComponent:@"School.sqlite"];

[store addPersistentStoreWithType:NSSQLiteStoreTypeconfiguration:nil URL:[NSURL fileURLWithPath:sqlitePath] options:nilerror:nil];

context.persistentStoreCoordinator =store;

然后我们来测试一下是否可以写入数据

#pragma mark - 添加

- (void)addStudent

{

//为了更好地演示查询和分页,我们通过FOR循环来创建多个个学生对象

;i<<span style="font-variant-ligatures: no-common-ligatures;color: #272ad8">20; i++)

{

Student*stu=[NSEntityDescriptioninsertNewObjectForEntityForName:@"Student"inManagedObjectContext:_context];

== ){

stu.name= [NSStringstringWithFormat:@"李四%d",i];

}

else

{

stu.name= [NSStringstringWithFormat:@"张三%d",i];

}

stu.age=
@(1.9+ i);

}

//
直接保存数据库

[_contextsave:nil];

}

写入数据成功,接下来就是分页查询的使用方法

#pragma mark - 分页查询

- (void)pagination

{

// 1.FectchRequest
抓取请求对象

NSFetchRequest
*request= [NSFetchRequest fetchRequestWithEntityName:@"Student"];

// 2.分页查询

//
分页的起始索引

request.fetchOffset=
;

//
每一页条数

request.fetchLimit=
;

//因为我们总共添加了20条数据,所以从0- 7会获取7条信息

//                         7 - 7也是7条信息

//                   
当从 14- 7
获取的时候就只剩6条信息了

//     3.设置排序

//     身高的升序排序

NSSortDescriptor
*ageSort= [NSSortDescriptor sortDescriptorWithKey:@"age"ascending:YES]; //降序为NO

request.sortDescriptors=
@[ageSort];

// 4.执行请求

NSArray*stus = [_contextexecuteFetchRequest:requesterror:nil];

for(Student*stu
instus)

{

NSLog(@"名字:%@身高:%@",stu.name,stu.age);

}

}

#pragma mark - 模糊查询

- (void)dimquery

{

// 1.FectchRequest
抓取请求对象

NSFetchRequest
*request= [NSFetchRequest fetchRequestWithEntityName:@"Student"];

// 2.设置过滤条件

//
查找“张”开头也可以用like

NSPredicate*pre= [NSPredicatepredicateWithFormat:@"nameBEGINSWITH
%@",@"张"];

// like的功能和上面的BEGINSWITH一样

//    NSPredicate *pre =[NSPredicate predicateWithFormat:@"name like %@", @"张"];

//
查找 “1”结尾

//    NSPredicate *pre =[NSPredicate predicateWithFormat:@"name ENDSWITH %@", @"1"];

//
查找包含“张三2”的

//    NSPredicate *pre =[NSPredicate predicateWithFormat:@"name CONTAINS %@",@"张三2"];

request.predicate= pre;

// 3.设置排序

//
身高的升序排序

NSSortDescriptor
*ageSort= [NSSortDescriptor sortDescriptorWithKey:@"age"ascending:YES]; //降序为NO

request.sortDescriptors=
@[ageSort];

// 4.执行请求

NSArray*stus = [_contextexecuteFetchRequest:requesterror:nil];

for(Student*stu
instus)

{

NSLog(@"名字:%@身高:%@",stu.name,stu.age);

}

}

DEMO下载地址:链接: http://pan.baidu.com/s/13Feay 密码: qyjq
OK,以上就是最常用的几种查询方式,在实际应用中可以穿插使用来达到想要的效果,更多地CoreData使用可在博客中找到。
如果内容有错或有什么问题可以与我联系,转载请注明出处,谢谢!

【CoreData】分页查询和模糊查询的更多相关文章

  1. 10月30日下午 PHP精确查询(模糊查询、模糊+关键字共同查询)

    1.一个条件的模糊查询 <body> <br /> <form action="main.php" method="post"&g ...

  2. Linq动态查询与模糊查询 ---转

    Linq动态查询与模糊查询(带源码示例) 继LINQ动态组合查询PredicateExtensions讲解 ----- 在用上面的方法时遇到了些问题 解决 LINQ to Entities 不支持 L ...

  3. 【知识库】-数据库_MySQL之基本数据查询:子查询、分组查询、模糊查询

    简书作者:seay 文章出处: 关系数据库SQL之基本数据查询:子查询.分组查询.模糊查询 回顾:[知识库]-数据库_MySQL常用SQL语句语法大全示例 Learn [已经过测试校验] 一.简单查询 ...

  4. Asp.net Core C#进行筛选、过滤、使用PredicateBuilder进行动态拼接lamdba表达式树并用作条件精准查询,模糊查询

    在asp.net core.asp.net 中做where条件过滤筛选的时候写的长而繁琐不利于维护,用PredicateBuilder进行筛选.过滤.LInq配合Ef.core进行动态拼接lamdba ...

  5. Springmvc+Myabtis+Ajax实现异步分页emp+dept(全部查询及模糊查询)

    1.在项目中创建如下目录 2.创建实体类Dept package com.entity; import java.io.Serializable; /** * 部门表 * @author Admini ...

  6. 10 star组件之分页, search模糊查询, action批量处理

    1.分页组件高阶 1.分页的class形式(有bug,请看下面的) """ 自定义分页组件 """ class Pagination(obj ...

  7. 18 12 06 sql 的 基本语句 查询 条件查询 逻辑运算符 模糊查询 范围查询 排序 聚合函数 分组 分页 连接查询 自关联 子查询

    -- 数据的准备 -- 创建一个数据库 create database python_test charset=utf8; -- 使用一个数据库 use python_test; -- 显示使用的当前 ...

  8. thinkphp条件查询和模糊查询的一些方法

    #文章管理 public function adminArticle(){ $adminArticle=M("article"); $arr_seach=$this->sea ...

  9. 【mysql】 mysql 子查询、联合查询、模糊查询、排序、聚合函数、分组----------语法

    第二章 mysql 一.模糊查询 like 1. 字段 like '河北省%' %代表任何N个字符 2 字段 like '河北省____' _代表任意1个字符 二.IN 语法:SELECT 字段列1, ...

随机推荐

  1. Elasticsearch 动态映射——自动检测

    ES中有一个非常重要的特性——动态映射,即索引文档前不需要创建索引.类型等信息,在索引的同时会自动完成索引.类型.映射的创建. 那么什么是映射呢?映射就是描述字段的类型.如何进行分析.如何进行索引等内 ...

  2. HT for Web可视化QuadTree四叉树碰撞检测

    QuadTree四叉树顾名思义就是树状的数据结构,其每个节点有四个孩子节点,可将二维平面递归分割子区域.QuadTree常用于空间数据库索引,3D的椎体可见区域裁剪,甚至图片分析处理,我们今天介绍的是 ...

  3. 解决The file “FWLifeApp” couldn’t be opened because you don’t have permission to view it.问题

    The file “FWLifeApp” couldn’t be opened because you don’t have permission to view it问题是因为项目文件中的Bundl ...

  4. CentOS上安装SQL Server vNext CTP1

    今天微软正式发布上SQL Server 2016 SP1,根据以往的SP1定律,可以在生产环境上使用了.打了SP1的标准版将具有企业版几乎所有的的功能.只有RAM 超过128GB或者超过24核心或者超 ...

  5. 【转】Xml序列化

    XML序列化是将对象的公共属性和字段转换为XML格式,以便存储或传输的过程.反序列化则是从XML输出中重新创建原始状态的对象.XML序列化中最主要的类是XmlSerializer类.它的最重要的方法是 ...

  6. unity3d引擎的学习

    1.在project里面建立一个Editor文件夹,并在其下面放置配置某个游戏物体X的脚本,就可以在游戏物体那一栏里面新建该游戏物体X. 2.将一个游戏物体B放到某个游戏物体F下,点击Reset po ...

  7. MySQL: Tree-Hierarchical query

             http://dba.stackexchange.com/questions/30021/mysql-tree-hierarchical-query     No problem. ...

  8. mysql学习笔记 第六天

    改变数据表的结构: alter table tb_name action,[action,action](使用alter table 之前,需要查看数据表的当前定义,需要执行show create t ...

  9. MVC-自定义过滤器

    APS.NET MVC中的每一个请求,都会分配给相应的控制器和对应的行为方法去处理,而在这些处理的前前后后如果想再加一些额外的逻辑处理.这时候就用到了过滤器. 自定义过滤器: 若要自定义一个过滤器,则 ...

  10. HTTP协议简解

    1.什么是http协议 http协议: 浏览器客户端 与  服务器端 之间数据传输的规范 2.查看http协议的工具 1)使用火狐的firebug插件(右键->查看元素->网络) 2)使用 ...