NSPredicate(谓词)

第一次接触“谓词”是在大学课堂的 《离散数学》 里。当时觉得挺好,挺有用。从当时的阅历来看,找不到谓词的使用场景。

在开发中有很多地方可以使用谓词。谓词最基本的功能就是:if 语句的判断

第二功能:数据筛选

说了这么多,可能还是有人不懂,何为谓词;谓词的另一叫法:断定。

“今天下雨” 这是一句话  对于这句话 有两个可能的结果 下雨 或者 不下。如果下雨,说明断定是对的,否则,断定是错的。

对于谓词,你可以简单的理解为:一个结果是BOOL的判定语句。

在实际的项目开发中,谓词的用途无外乎以上两种:作为if的条件 、  数据晒攒

看一下iOS中如何使用谓词

@interface Person : NSObject//定义一个Person类,头文件如下


@property(nonatomic,copy)NSString *name;

@property(nonatomic,assign)int age;

@property(nonatomic,copy)NSString *gender;

@property(nonatomic,assign)float score;

- (id)initWithName:(NSString *)name age:(int)age gender:(NSString *)gender score:(float)score;

+ (id)personWithName:(NSString *)name age:(int)age gender:(NSString *)gender score:(float)score;

 

@end

 

//在你的main或者 某类的实现文件里 添加两个方法

- (void)initPersonData//往数组里面添加若干Person对象

{

    Person *p1 = [Person personWithName:@"张三" age:20 gender:@"男" score:89];

    Person *p2 = [Person personWithName:@"李四" age:24 gender:@"男" score:65];

    Person *p3 = [Person personWithName:@"王五" age:30 gender:@"男" score:76];

    Person *p4 = [Person personWithName:@"小红" age:20 gender:@"女" score:92];

    Person *p5 = [Person personWithName:@"小强" age:22 gender:@"女" score:62];

    Person *p6 = [Person personWithName:@"小马哥" age:25 gender:@"男" score:87];

    Person *p7 = [PersonpersonWithName:@"steve jobs"age:56gender:@"男"score:60];

    Person *p8 = [PersonpersonWithName:@"neal"age:26gender:@"男"score:90];

    self.persons = [[[NSMutableArrayalloc] initWithCapacity:8] autorelease];

    [self.persons addObject:p1];

    [self.persons addObject:p2];

    [self.persons addObject:p3];

    [self.persons addObject:p4];

    [self.persons addObject:p5];

    [self.persons addObject:p6];

    [self.persons addObject:p7];

    [self.persons addObject:p8];

}

- (void)predicateSimpleUse//谓词的测试

{

    Person *p = [self.persons objectAtIndex:0];

    

    //person的 name 是否是张三 name是person的属性   注意:  =和==是一样的

    NSPredicate *predicate  = [NSPredicate predicateWithFormat:@"name = '张三'"];

    BOOL match = [predicate evaluateWithObject:p];

    NSLog(@"%@",match?@"YES":@"NO");

    

    //person的score是否 >= 90

    predicate  = [NSPredicate predicateWithFormat:@"score >= 90"];

    for(Person *person in self.persons)

    {

        if([predicate evaluateWithObject:person])

        {

            NSLog(@"person:%@ %g",person.name,person.score);

        }

    }

    

    //筛选出 score >= 90的 所有person放入新的数组中   对于NSMutableArray,还有个filterUsingPredicate:方法,原数组中筛选符合条件的元素

    NSArray *results = [self.persons filteredArrayUsingPredicate:predicate];

    NSLog(@"%@",results);

    

    //含有变量的谓词

    predicate = [NSPredicate predicateWithFormat:@"age = $Test"];

    NSDictionary *dic = [NSDictionarydictionaryWithObjectsAndKeys:[NSNumbernumberWithInt:24],@"Test", nil];

    NSPredicate *newPre = [predicate predicateWithSubstitutionVariables:dic];

    NSLog(@"new %@",newPre);

    for(Person *person in self.persons)

    {

        if([newPre evaluateWithObject:person])

        {

            NSLog(@"person:%@ %d",person.name,person.age);

        }

    }

   &n

...

基于SSM框架的智能家政保洁预约系统,是一个旨在提高家政保洁服务预约效率和管理水平的平台。该系统通过集成现代信息技术,为家政公司、家政服务人员和消费者提供了一个便捷的在线预约和管理系统。 系统的主要功能包括: 1. **用户管理**:允许消费者注册、登录,并管理他们的个人资料和预约历史。 2. **家政人员管理**:家政服务人员可以注册并更新自己的个人信息、服务类别和服务时间。 3. **服务预约**:消费者可以浏览不同的家政服务选项,选择合适的服务人员,并在线预约服务。 4. **订单管理**:系统支持订单的创建、跟踪和管理,包括订单的确认、完成和评价。 5. **评价系统**:消费者可以在家政服务完成后对服务进行评价,帮助提高服务质量和透明度。 6. **后台管理**:管理员可以管理用户、家政人员信息、服务类别、预约订单以及处理用户反馈。 系统采用Java语言开发,使用MySQL数据库进行数据存储,通过B/S架构实现用户与服务的在线交互。系统设计考虑了不同用户角色的需求,包括管理员、家政服务人员和普通用户,每个角色都有相应的权限和功能。此外,系统还采用了软件组件化、精化体系结构、分离逻辑和数据等方法,以便于未来的系统升级和维护。 智能家政保洁预约系统通过提供一个集中的平台,不仅方便了消费者的预约和管理,也为家政服务人员提供了一个展示和推广自己服务的机会。同时,系统的后台管理功能为家政公司提供了强大的数据支持和决策辅助,有助于提高服务质量和管理效率。该系统的设计与实现,标志着家政保洁服务向现代化和网络化的转型,为管理决策和控制提供保障,是行业发展中的重要里程碑。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值