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 不一样就可以了。
相关推荐
多表查询的基本概念涉及到了SQL的JOIN操作,但CoreData使用 NSPredicate 对象来表达查询条件,而不是SQL语句。以下是一些关键知识点: 1. **NSPredicate**: 这是CoreData查询的核心,用于定义查询条件。你可以通过...
2. **NSPredicate**:用于在查询中定义过滤条件。在多表查询中,可以通过`IN`、`ANY`、`ALL`等关键字与关系一起使用,例如查询所有与特定实体有关联的数据。 3. **JOIN操作**:虽然CoreData没有直接提供SQL式的JOIN...
CoreData提供了一种强大的查询语言——NSPredicate,可以用来过滤数据。以下是如何根据名字查询Person的例子: ```swift let fetchRequest: NSFetchRequest<Person> = Person.fetchRequest() fetchRequest....
CoreData是苹果公司提供的一种数据管理框架,用于iOS、macOS以及其他Apple平台的应用程序中,它为应用程序提供了模型层的管理,包括对象的持久化、关系处理和查询能力。在这个"CoreData简单使用dome"中,我们将深入...
CoreData是苹果公司提供的一种数据管理框架,用于iOS、macOS等Apple平台的应用程序中,它简化了SQLite数据库的使用。在"coredata添加 删除 查找"这个主题中,我们将探讨如何利用CoreData来实现对SQLite数据库的基本...
CoreData支持NSPredicate表达式,可以进行复杂的查询。 4. 更新(Update):更新数据意味着获取要修改的对象,改变其属性,然后保存上下文。更新操作可能包含`refreshObject(_:mergeChanges:)`方法来刷新对象状态,...
- 查询数据:如何使用NSFetchRequest、NSSortDescriptor和NSPredicate进行复杂的数据查询。 - 检测并解决并发问题:在多线程环境中使用CoreData需要注意的问题。 - CoreDate与SQLite的关系:虽然CoreData不直接使用...
3. **查询语言(NSPredicate)**:CoreData的查询语法比SQL更面向对象,更易于理解和编写。 4. **改变跟踪**:CoreData可以自动检测并管理对象状态的变化,简化了数据更新的操作。 5. **缓存机制**:CoreData有良好...
NSPredicate用于定义查询条件,NSSortDescriptor用于排序结果,而NSFetchResultController则用于管理和更新UI。执行请求后,会返回一个结果集,包含了满足条件的对象。 5. **CoreData架构**: CoreData架构包含三...
通过NSPredicate可以设置过滤条件,通过NSSortDescriptor可以进行排序,还可以通过NSFetchResultController实现数据的分页和实时更新。 8. **生命周期管理**:在应用启动时,CoreData会加载数据模型,创建上下文和...
- **实例**: 创建一个 `NSFetchRequest` 对象来指定查询条件,如 `NSPredicate` 来过滤数据,`NSSortDescriptor` 来排序结果。 #### 三、实操步骤 **1. 创建 CoreData 的 Model** - 打开 Xcode,选择 File > New ...
CoreData提供了多种方式来查询数据,如NSFetchRequest、NSPredicate等。以下是一个简单的查询所有新闻的例子: ```swift let fetchRequest = NSFetchRequest(entityName: "News") do { let results = try context....
5. **查询**:CoreData提供了NSFetchRequest和NSPredicate来执行查询。NSFetchRequest用于指定要获取的对象,而NSPredicate则是过滤条件,可以根据属性值、关系等进行筛选。 6. **学习说明**:在“CoreData Demo”...
4. **查询数据(Query)**:根据需求创建NSFetchRequest,设置筛选条件、排序和分组,然后执行查询。例如: ```swift func fetch(entityName: String, predicate: NSPredicate? = nil, sortDescriptors: ...
4. **查询数据**:Core Data支持强大的NSPredicate表达式进行查询,可以根据各种条件筛选数据。此外,NSFetchRequest可以帮助我们获取满足条件的对象集合。 5. **数据模型升级**:随着应用程序的发展,数据模型可能...
然而,对于更复杂的查询需求,可能需要扩展这个封装或者直接使用CoreData提供的更强大的查询语言(NSPredicate)来实现。对于刚开始接触CoreData的开发者,这是一个很好的学习起点,可以理解如何将数据模型与字典...
02-Queried Color List可能深入到CoreData的查询功能,讲解如何使用NSFetchRequest、NSSortDescriptor和NSPredicate来获取、排序和过滤数据。这在实际应用中非常关键,因为通常我们需要根据用户需求动态地从数据存储...
CoreData是苹果提供的一种数据管理框架,主要用于iOS、macOS等平台上的应用程序,它提供了对象关系映射(ORM)的功能,使得开发者可以更方便地在应用程序中管理和存储数据。在这个"有关CoreData简单使用"的资源中,...
开发者可以通过NSPredicate编写复杂的查询条件,以满足不同的数据检索需求。 5. **变更管理(Change Management)**:CoreData自动跟踪对象的更改,简化了数据同步和更新的过程。 6. **事务处理**:CoreData支持...
同时,它提供了强大的关系型数据管理功能,如一对一、一对多、多对多的关系,以及强大的查询语言NSPredicate,使得数据检索更加灵活。 总之,CoreData为Apple平台的应用提供了高效、便捷的数据管理方案,结合SQLite...