coredata中谓词的使用

Cocoa提供了一个类NSPredicate类,该类主要用于指定过滤器的条件,该对象可以准确的描述所需条件,对每个对象通过谓词进行筛选,判断是否与条件相匹配。谓词表示计算真值或假值的函数。在cocoa中封装的一个数据库框架cocoaData里面 在进行查询(包括模糊查询)时同样会要用到谓词;下面对谓词的使用方法及规则进行简要的介绍下:

1,用predicateWithFormat创建一个谓词

  • 条件

NSString *predicateString [email protected]"name==‘Herbie‘"

NSString *predicateString [email protected]"engine.horsepower > 150" 属性值

NSString *predicateString [email protected]"(engine.horsepower > 50) AND (engine.horsepower     < 200)";可以运用运算符

NSString *predicateString [email protected]"engine.horsepower BETWEEN { 50, 200 }";这里可以运用between关键字。和上面效果一样

NSString *predicateString [email protected]"name IN { ‘Herbie‘, ‘Snugs‘, ‘Badger‘, ‘Flap‘ }";包含在其中用IN

NSString *predicateString [email protected]"name BEGINSWITH ‘Bad‘";字符串运算符BEGINSWITH,ENDSWITH,CONTAINS[c][d][cd]

BEGINSWITH:检查某个字符串是否以另一个字符串开头。

ENDSWITH:检查某个字符串是否以另一个字符串结尾。

CONTAINS:检查某个字符串是否以另一个字符串内部。

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

  • 创建谓词

NSPredicate *predicate=[NSPredicate predicateWithFormat:predicateString]

results = [cars filteredArrayUsingPredicate: predicate];

NSLog (@"%@", results);

  • like的使用

predicate = [NSPredicate predicateWithFormat:@"name LIKE[cd] ‘*er*‘"];//*代表通配符Like还接受[cd].

results = [cars filteredArrayUsingPredicate: predicate];

NSLog (@"%@", results);

predicate = [NSPredicate predicateWithFormat:@"name LIKE[cd] ‘???er*‘"];//?只匹配一个字符并且还可以接受[cd].

results = [cars filteredArrayUsingPredicate: predicate];

NSLog (@"%@", results);

感谢大神

时间: 2024-10-24 00:25:06

coredata中谓词的使用的相关文章

CoreData用法三: NSPredicate在CoreData中的使用

NSPredicate在CoreData中常用作查询使用,相当于sql语句中的where查询子句. 最常用的方法为: NSPredicate *ca = [NSPredicate predicateWithFormat:(NSString *), ...]; 比如我们要查询student表中name="jjy"的信息,我们可以这样去用NSPredicate NSEntityDescription * emEty = [NSEntityDescription entityForName:

iOS中谓词的使用

Cocoa提供了一个类NSPredicate类,该类主要用于指定过滤器的条件,该对象可以准确的描述所需条件,对每个对象通过谓词进行筛选,判断是否与条件相匹配.谓词表示计算真值或假值的函数.在cocoa中封装的一个数据库框架cocoaData里面 在进行查询(包括模糊查询)时同样会要用到谓词:下面对谓词的使用方法及规则进行简要的介绍下: 1,用predicateWithFormat创建一个谓词 条件 NSString *predicateString [email protected]"name=

Coredata中的多线程

=================== 疑问: 1.coredata是什么?结构 2.如果在简单的demo中,我们可以在主线程中使用coredata.但是如果在真正的大项目中,这样可行么? 3.假设都在主线程,那么我们的项目中有很多模块也要进行存放.那么我们的代码该如何组织,使全部模块用一个数据库多张表?还是一个模块一个数据库? 4.如何在多线程使用用coredata,有几种策略实现 5.coredata的数据迁移 6.总结 ==============================内容===

C语言中谓词的用法

NSArray *persons = @[jack, tom, rose, lucy, bob, john, lily]; //指定谓词条件 NSPredicate *pre1 = [NSPredicate predicateWithFormat:@"age < 40"]; for (Person *person in persons) { //条件匹配 //验证对象是否符合谓词pre1 BOOL bool1 = [pre1 evaluateWithObject:person];

swift CoreData中CoreData: warning: Unable to load class named问题

问题 用swift创建CoreData项目时,操作CoreData Modal时,出现下面错误 CoreData: warning: Unable to load class named 'Book' for entity 'Book'. Class not found, using default NSManagedObject instead. 解决办法 1. 在book.swift 中添加 @objc(Book) 2. 修改CoreData模板 /Applications/Xcode.ap

[Xcode10 实际操作]七、文件与数据-(14)数据持久化存储框架CoreData的使用:删除CoreData中的数据

本文将演示如何删除数据持久化对象. 在项目导航区,打开视图控制器的代码文件[ViewController.swift] 1 import UIKit 2 //引入数据持久化存储框架[CoreData] 3 import CoreData 4 5 class ViewController: UIViewController { 6 7 override func viewDidLoad() { 8 super.viewDidLoad() 9 // Do any additional setup a

Mysql中谓词使用date_format的优化

优化前: SELECT a.* FROM t1 a, (SELECT obj_id,MAX(PRE_DETAIL_INST_ID) PRE_DETAIL_INST_ID FROM t1 WHERE DATE_FORMAT(crt_date,'%Y-%m-%d %H') < DATE_FORMAT(NOW(),'%Y-%m-%d %H') AND DATE_FORMAT(crt_date,'%Y-%m-%d %H') >= DATE_FORMAT(DATE_ADD(NOW(),INTERVAL

对coreData中得到context的封装

+(NSManagedObjectContext *)getContext{ NSManagedObjectModel * model=[NSManagedObjectModel mergedModelFromBundles:nil]; NSPersistentStoreCoordinator * psc=[[NSPersistentStoreCoordinator alloc]initWithManagedObjectModel:model]; NSString * path=[NSSearc

ios考试题

※ 选择题(共40题,每题2分) 1.我们输出MD5值的时候,选用的是什么进制输出的? 答案:(D)    A.2    B.8    C.10    D.16 2.下列哪些不属于CALayer属性 答案:(D)    A.CornerRadius    B.ShadowOpacity    C.anchorPoint    D.CGColor 3.有下列枚举类型代码 enum ProductCategory {case Washers , Dryers, Toasters} var produ