如何排序NSPredicate [英] How to sort NSPredicate

查看:253
本文介绍了如何排序NSPredicate的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想使用NSPredicate排序我的数组..我已经阅读其他地方可能使用NSSortDescriptor可能是一个选项。



我试图按公司名称对数组进行排序。



,感谢



Greg

   - (void)filterSummaries:(NSMutableArray *)all byNameThenBooth:(NSString *)text results:(NSMutableArray *)results 
{
[results removeAllObjects];

if((nil!= text)&&(0< [text length])){
if((all!= nil)&& ; [all count])){
NSPredicate * predicate = [NSPredicate predicateWithFormat:@companyName contains [cd]%@ OR boothNumber beginswith%@,text,text];
[results addObjectsFromArray:[all filteredArrayUsingPredicate:predicate]];
}
}
else {
[results addObjectsFromArray:all];
}
}


解决方案有几个选项如何对数组排序:



我会在这里显示一个基于NSSortDescriptor的方法。

  NSPredicate * predicate = [NSPredicate predicateWithFormat:
@companyName contains [cd]%@ OR boothNumber startedwith%@,
text,
text];

//注释掉旧的起点:)
// [results addObjectsFromArray:[all filteredArrayUsingPredicate:predicate]];

//创建描述符
//这里假设结果是Key-Value-accessible
NSSortDescriptor * descriptor = [NSSortDescriptor sortDescriptorWithKey:@companyName
ascending:YES];
//
NSArray * results = [[all filteredArrayUsingPredicate:predicate]
sortedArrayUsingDescriptors:[NSArray arrayWithObject:descriptor]];

//结果var指向一个NSArray对象,其内容按公司名称键升序排列。

这应该做你的工作。


I am trying to sort my array while using NSPredicate.. I have read other places that possibly using NSSortDescriptor could be an option. Having some trouble figuring this out.

I am attempting to sort my array by companyName.

Any advice appreciated, thanks

Greg

- (void)filterSummaries:(NSMutableArray *)all byNameThenBooth:(NSString*) text results:(NSMutableArray *)results
{
    [results removeAllObjects];

    if ((nil != text) && (0 < [text length])) {        
        if ((all != nil) && (0 < [all count])) {
            NSPredicate *predicate = [NSPredicate predicateWithFormat: @"companyName contains[cd] %@ OR boothNumber beginswith %@", text, text];
            [results addObjectsFromArray:[all filteredArrayUsingPredicate:predicate]];        
        }
    }
    else {
        [results addObjectsFromArray:all];
    }
}

解决方案

you have several options how to sort an array:

I'll show a NSSortDescriptor-based approach here.

NSPredicate *predicate = [NSPredicate predicateWithFormat:
                                  @"companyName contains[cd] %@ OR boothNumber beginswith %@",
                                  text,
                                  text];

// commented out old starting point :)
//[results addObjectsFromArray:[all filteredArrayUsingPredicate:predicate]];

// create a descriptor
// this assumes that the results are Key-Value-accessible
NSSortDescriptor *descriptor = [NSSortDescriptor sortDescriptorWithKey:@"companyName" 
                                                             ascending:YES];
//
NSArray *results = [[all filteredArrayUsingPredicate:predicate]  
                     sortedArrayUsingDescriptors:[NSArray arrayWithObject:descriptor]];

// the results var points to a NSArray object which contents are sorted ascending by companyName key

This should do your job.

这篇关于如何排序NSPredicate的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆