NSArray中数据排序方法
来源:互联网 发布:计算机java二级考试 编辑:程序博客网 时间:2024/05/29 07:37
1函数介绍与实例
函数一:- (void)sortUsingSelector:(SEL)comparator;
适用于数组中的元素自带比较函数时;
数组排序函数,调用该函数的对象为数组,comparator是调用该函数的数组中的元素的方法。函数参数类型为数组中的元素类型或者id类型,在调用时不需要传递参数,排序过程不可见,该函数执行时:循环取出各个元素,进行比较,然后放到合适的位置
使用实例:
将数组中的元素按照字符串大小排序:
NSMutableArray*array = [[NSMutableArray alloc] initWithObjects:@"White",@"Blue",@"Red",@"Black",nil];
[arraysortUsingSelector:@selector(compare:)];
NSLog(@"sorted array:%@",array);
运行结果是:sorted array:
(
Black,
Blue,
Red,
White
)
解释:在调用sortUsingSelector()方法时,我们指定使用compare:方法来进行比较。它内部可能使用了类型来进行判断,因为比较的类型是NSString,所以会调用NSString 的compare:方法。排序的过程是不可见的,但是过程就是:取出各个元素,使用compare:比较,然后放到合适的位置。对于compare:函数则在NSString类的扩展(category)已经定义号了。系统已经知道如何判定A 字串和B字串谁比较大,对于自己定义好的类中,需要自己定义compare方法,并指定一个排序参数(比如我们定义一个Sudent的类型,然后规定排序的时候按照ID来排。
函数二-(void)sortUsingFunction:(NSInteger (*)(id, id, void *))compare ontext:(void*)context;
数组中元素不带比较函数时,建议使用。
使用方法:只需要在调用比较函数的类中定义比较函数如下:
NSInteger sortObjectsByPatientID(id obj1, id obj2,void *context)
{
NSString*d1 = [(Study*)obj1 patientID];//obj1 obj2 为数组中的元素,patientID是其属性之一
NSString*d2 = [(Study*)obj2 patientID];
return[d2 compare:d1];
}
然后调用比较函数:
[listDataArraysortUsingFunction:sortObjectsByPatientName context:NULL];
函数三:- (void)sortUsingSelector:(SEL)comparator;函数。
利用该函数,需要在数组中的元素具有比较方法。
首先定义元素类,在其中实现比较方法:
类定义
@interface Study : NSObject
{
NSString*patientID;
}
- (NSComparisonResult)compareID:(Study*)dic;
@end;
类实现
@implementation Study
- (NSComparisonResult)compareID:(Study*)dic
{
return[patientID compare:dic.patientID];
}
@end;
在其他类中调用排序方法:
@interface Sorttest: NSObject<NSCopying,NSCoding>
{
NSMutableArray *listArrray; //用来存储AddressCard对象的可变数组
}
-(void)sort
{
[listArrray sortUsingSelector:@selector(compareID:)]; //sort方法,listArrray中存储着所有的Study类型对象 //比较的方式就是调用compareID:的方法
}
- NSArray中数据排序方法
- NSArray中数据排序方法
- NSArray的排序方法
- NSArray方法、排序
- NSArray的排序方法
- NSArray排序方法
- NSArray的排序方法
- NSArray排序方法
- iOS中NSArray的各种遍历以及各种排序方法
- NSArray中的数据进行排序
- NSARRAY排序三种方法
- NSArray排序方法比对
- 排序的NSArray中搜索
- NSArray中的数据进行排序2
- NSArray中的数据进行排序 ---- sortedArrayUsingDescriptors
- [ios]NSArray中的数据进行排序 ---- sortedArrayUsingDescriptors
- 22-OC中通过block对NSArray中的数据进行排序
- NSArray排序的三种方法
- 单身快乐(致一个人的情人节)
- 感悟
- 管道实现处理分工,实现两数想加 linux环境高级编程
- 9-17ASP第一节
- 经典数据结构B+树
- NSArray中数据排序方法
- 原子操作及其重要性
- 关于爱情
- PHP生成条形码
- linux wget
- cocos2d精灵与动画详解
- poj2635The Embarrassed Cryptographer(数论)(解题报告)
- linux wget2
- Android自定义进度条颜色