`
jiapumin
  • 浏览: 344882 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

CoreData条件查询之NSPredicate应用

 
阅读更多

NSPredicate用于查询和过滤

在SQL中作为查询条件通常用WHERE,但在COREDATA中作为查询条件就可以用到NSPredicate.

NSPredicate 不单可以和COREDATA中的FetchRequest 配合使用。也可以与NSArray配合使用。

 

NSPredicate 中支持的关键词和条件符:

1、>,<,>=,<=,= 比较运算符。

如:

     NSPredicate * qcondition= [NSPredicate predicateWithFormat:@"salary >= 10000"];

2、字符串操作(包含):BEGINSWITH、ENDSWITH、CONTAINS

如:

        @"employee.name BEGINSWITH[cd] '李'" //姓李的员工

     @"employee.name ENDSWITH[c] '梦'"   //以梦结束的员工

     @"employee.name CONTAINS[d] '宗'"   //包含有"宗"字的员工

注:[c]不区分大小写[d]不区分发音符号即没有重音符号[cd]既不区分大小写,也不区分发音符号。

 

3、范围:IN   ,BWTEEN

如:

    @"salary BWTEEN {5000,10000}"

    @"em_dept IN '开发'"

 

4、自身:SELF,这个只针对字符数组起作用。

如:

     NSArray * test = =[NSArray arrayWithObjects: @"guangzhou", @"beijing", @"shanghai", nil];

     @"SELF='beijing'"

 

5、通配符:LIKE

     LIKE 使用?表示一个字符,*表示多个字符,也可以与c、d 连用。

如:

     @"car.name LIKE '?he?'" //四个字符中,中间为he

     @"car.name LIKE '*jp'"   //以jp结束

 

6、正则表达式:MATCHES

如:

NSString *regex = @"^E.+e$";//以E 开头,以e 结尾的字符。
NSPredicate *pre= [NSPredicate predicateWithFormat:@"SELF MATCHES %@", regex];
if([pre evaluateWithObject: @"Employee"]){
NSLog(@"matches YES");

}else{
NSLog(@"matches NO");

}

 

7、逻辑运算符:AND、OR、NOT
如:

      @"employee.name = 'john' AND employee.age = 28"

 

8、占位符:
NSPredicate *preTemplate = [NSPredicate predicateWithFormat:@"name==$NAME"];
NSDictionary *dic=[NSDictionary dictionaryWithObjectsAndKeys:
@"Name1", @"NAME",nil];
NSPredicate *pre=[preTemplate predicateWithSubstitutionVariables: dic];
占位符就是字典对象里的key,因此你可以有多个占位符,只要key 不一样就可以了。

分享到:
评论

相关推荐

    CoreData多表查询

    多表查询的基本概念涉及到了SQL的JOIN操作,但CoreData使用 NSPredicate 对象来表达查询条件,而不是SQL语句。以下是一些关键知识点: 1. **NSPredicate**: 这是CoreData查询的核心,用于定义查询条件。你可以通过...

    coredata多表查询demo

    2. **NSPredicate**:用于在查询中定义过滤条件。在多表查询中,可以通过`IN`、`ANY`、`ALL`等关键字与关系一起使用,例如查询所有与特定实体有关联的数据。 3. **JOIN操作**:虽然CoreData没有直接提供SQL式的JOIN...

    CoreData添加、删除、查询

    CoreData提供了一种强大的查询语言——NSPredicate,可以用来过滤数据。以下是如何根据名字查询Person的例子: ```swift let fetchRequest: NSFetchRequest&lt;Person&gt; = Person.fetchRequest() fetchRequest....

    CoreData简单使用dome

    CoreData是苹果公司提供的一种数据管理框架,用于iOS、macOS以及其他Apple平台的应用程序中,它为应用程序提供了模型层的管理,包括对象的持久化、关系处理和查询能力。在这个"CoreData简单使用dome"中,我们将深入...

    coredata添加 删除 查找

    CoreData是苹果公司提供的一种数据管理框架,用于iOS、macOS等Apple平台的应用程序中,它简化了SQLite数据库的使用。在"coredata添加 删除 查找"这个主题中,我们将探讨如何利用CoreData来实现对SQLite数据库的基本...

    CoreData简单工具类

    CoreData支持NSPredicate表达式,可以进行复杂的查询。 4. 更新(Update):更新数据意味着获取要修改的对象,改变其属性,然后保存上下文。更新操作可能包含`refreshObject(_:mergeChanges:)`方法来刷新对象状态,...

    CoreData iOS

    - 查询数据:如何使用NSFetchRequest、NSSortDescriptor和NSPredicate进行复杂的数据查询。 - 检测并解决并发问题:在多线程环境中使用CoreData需要注意的问题。 - CoreDate与SQLite的关系:虽然CoreData不直接使用...

    IOS coredata使用

    3. **查询语言(NSPredicate)**:CoreData的查询语法比SQL更面向对象,更易于理解和编写。 4. **改变跟踪**:CoreData可以自动检测并管理对象状态的变化,简化了数据更新的操作。 5. **缓存机制**:CoreData有良好...

    CoreData增删改查

    NSPredicate用于定义查询条件,NSSortDescriptor用于排序结果,而NSFetchResultController则用于管理和更新UI。执行请求后,会返回一个结果集,包含了满足条件的对象。 5. **CoreData架构**: CoreData架构包含三...

    CoreData 数据存储

    通过NSPredicate可以设置过滤条件,通过NSSortDescriptor可以进行排序,还可以通过NSFetchResultController实现数据的分页和实时更新。 8. **生命周期管理**:在应用启动时,CoreData会加载数据模型,创建上下文和...

    coreData使用

    - **实例**: 创建一个 `NSFetchRequest` 对象来指定查询条件,如 `NSPredicate` 来过滤数据,`NSSortDescriptor` 来排序结果。 #### 三、实操步骤 **1. 创建 CoreData 的 Model** - 打开 Xcode,选择 File &gt; New ...

    IOS之分析网易新闻存储数据 CoreData的使用 增删改查

    CoreData提供了多种方式来查询数据,如NSFetchRequest、NSPredicate等。以下是一个简单的查询所有新闻的例子: ```swift let fetchRequest = NSFetchRequest(entityName: "News") do { let results = try context....

    CoreData Demo

    5. **查询**:CoreData提供了NSFetchRequest和NSPredicate来执行查询。NSFetchRequest用于指定要获取的对象,而NSPredicate则是过滤条件,可以根据属性值、关系等进行筛选。 6. **学习说明**:在“CoreData Demo”...

    ios CoreData使用(封装)

    4. **查询数据(Query)**:根据需求创建NSFetchRequest,设置筛选条件、排序和分组,然后执行查询。例如: ```swift func fetch(entityName: String, predicate: NSPredicate? = nil, sortDescriptors: ...

    ios-coredata的应用

    4. **查询数据**:Core Data支持强大的NSPredicate表达式进行查询,可以根据各种条件筛选数据。此外,NSFetchRequest可以帮助我们获取满足条件的对象集合。 5. **数据模型升级**:随着应用程序的发展,数据模型可能...

    ios-CoreData封装第二季 支持字典转模型.zip

    然而,对于更复杂的查询需求,可能需要扩展这个封装或者直接使用CoreData提供的更强大的查询语言(NSPredicate)来实现。对于刚开始接触CoreData的开发者,这是一个很好的学习起点,可以理解如何将数据模型与字典...

    CoreData资料

    02-Queried Color List可能深入到CoreData的查询功能,讲解如何使用NSFetchRequest、NSSortDescriptor和NSPredicate来获取、排序和过滤数据。这在实际应用中非常关键,因为通常我们需要根据用户需求动态地从数据存储...

    有关CoreData简单使用

    CoreData是苹果提供的一种数据管理框架,主要用于iOS、macOS等平台上的应用程序,它提供了对象关系映射(ORM)的功能,使得开发者可以更方便地在应用程序中管理和存储数据。在这个"有关CoreData简单使用"的资源中,...

    ios-CoreData(适配IOS 9 10).zip

    开发者可以通过NSPredicate编写复杂的查询条件,以满足不同的数据检索需求。 5. **变更管理(Change Management)**:CoreData自动跟踪对象的更改,简化了数据同步和更新的过程。 6. **事务处理**:CoreData支持...

    coredata存储

    同时,它提供了强大的关系型数据管理功能,如一对一、一对多、多对多的关系,以及强大的查询语言NSPredicate,使得数据检索更加灵活。 总之,CoreData为Apple平台的应用提供了高效、便捷的数据管理方案,结合SQLite...

Global site tag (gtag.js) - Google Analytics