sqlite【CoreData】分页查询及模糊查询

每当CoreData实际用受到,分页查询与模糊查询是必需的,接下去演示一下:

首先

//
1.创造模型文件 (相当给一个数据库里之表明)

//
New File ———— CoreData ———— Data Model ————
Nextsqlite 1

sqlite 2

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

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

sqlite 3
sqlite 4

// 3.创立实体类

//
New File ———— CorData ———— NSManagedobject subclass
————Next(记得选择要关联的阐明)这样尽管会见自动生成相应的模型

sqlite 5

//
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循环来创造多无不学生对象

    for(inti =
0;i<<span style=”font-variant-ligatures:
no-common-ligatures;color: #272ad8″>20; i++)

    {

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

       

       if(i/2==
0){

          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= 0;

   //
每一页条数

    request.fetchLimit= 7;

  
//因为我们共加加了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使用可于博客中找到。

若情节来错或出什么问题得以和自家关系,转载请注明出处,谢谢!

 

网站地图xml地图