NSArray 数组排序
//方法1,使用自带的比较器//compare是数组自带的比较方法NSArray *array=[NSArray arrayWithObjects:@"3",@"1",@"2", nil];NSArray *array2= [array sortedArrayUsingSelector:@selector(compare:)];NSLog(@"%@",array2);
结果是升序排列
//方式二:使用块完成排NSArray *array = [NSArray arrayWithObjects:@"1bc",@"4b6",@"123",@"789",@"3ef", nil];NSArray *sortedArray = [array sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2) {//这里的代码可以参照上面compare:默认的排序方法,也可以把自定义的方法写在这里,给对象排序NSComparisonResult result = [obj1 compare:obj2];return result;}];NSLog(@"排序后:%@",sortedArray);
方法3:自定义排序
#import <Foundation/Foundation.h>@interface Person : NSObject@property NSString* name;@property int age;-(id)initWithNameAndAge:(NSString*) aName and:(int) aAge;-(NSComparisonResult)comparePersonByAge:(Person *)person;-(NSComparisonResult)comparePersonByName:(Person *)person;@end
#import "Person.h"@implementation Person@synthesize name,age;-(id)initWithNameAndAge:(NSString*) aName and:(int) aAge{if (self=[super init]) {name=aName;age=aAge;}return self;}//自定义排序方法-(NSComparisonResult)comparePersonByAge:(Person *)person{//默认按年龄排序NSComparisonResult result = [[NSNumber numberWithInt:person.age] compare:[NSNumber numberWithInt:self.age]];//注意:基本数据类型要进行数据转换//如果年龄一样,就按照名字排序//if (result == NSOrderedSame) {// result = [self.name compare:person.name];//}return result;}-(NSComparisonResult)comparePersonByName:(Person *)person{//默认按年龄排序NSComparisonResult result = [ person.name compare:self.name];//注意:基本数据类型要进行数据转换//如果年龄一样,就按照名字排序if (result == NSOrderedSame) {result = [[NSNumber numberWithInt:person.age] compare:[NSNumber numberWithInt:self.age]];}return result;}- (NSString *)description{return [NSString stringWithFormat:@"%@ %d", name,age];}@end
#import <Foundation/Foundation.h>#import "Person.h"int main(int argc, const char * argv[]) {@autoreleasepool {Person *p1 = [[Person alloc]initWithNameAndAge:@" qweasadsasd" and:25];Person *p2 = [[Person alloc]initWithNameAndAge:@"\t1234" and:28];Person *p3 = [[Person alloc]initWithNameAndAge:@"123" and:2];Person *p4 = [[Person alloc]initWithNameAndAge:@"zxc" and:89];Person *p5 = [[Person alloc]initWithNameAndAge:@"123" and:8];NSArray * persons = [NSArray arrayWithObjects:p1,p2,p3,p4,p5,nil];NSArray *sortedArray = [persons sortedArrayUsingSelector:@selector(comparePersonByName:)];NSLog(@"排序后:%@",sortedArray);}return 0;}
方法四:高级排序
NSArray 数组排序的更多相关文章
- OC NSArray数组排序
一.一般排序 // 排序 NSArray *arr = @["]; NSArray *newarr = [arr sortedArrayUsingSelector:@selector(com ...
- iOS之NSArray数组排序
一.数组遍历 除了常用的for和for-in遍历外,系统还提供了三种枚举遍历,对于大量的数据遍历可以使用下列三个方法. - (void)enumerateObjectsUsingBlock:(void ...
- OC中用NSSortDescriptor对象进行数组排序
//创建一个数组 NSArray *array = @[@"one", @"two", @"three", @"four" ...
- Objective C中数组排序几种情况的总结
总结OC中数组排序3种方法:sortedArrayUsingSelector:;sortedArrayUsingComparator:;sortedArrayUsingDescriptors: 数组排 ...
- NSSortDescriptor对象进行数组排序
//创建一个数组 NSArray *array = @[@"zhangsan", @"lisi", @"zhonger", @"z ...
- objective-c系列-NSArray
OC数组NSArray 对比 c数组 和 oc数组对象(指针) 定义 int array[10]; NS ...
- NSArray与NSMutableArray 数组与可变数组
1.NSArray 是一个父类,NSMUtableArray是其子类,他们构成了OC的数组.2.NSArray的创建NSArray * array = [[NSArray alloc]initWith ...
- OC NSArray 数组
# OC NSArray 数组 NSArray常用方法 获取数组中第一位元素 array.firstObject 获取数组中最后一个元素 array.lastObject 获取数组中指定索引下标的元素 ...
- Objective-C之NSArray(数组)默认排序与自定义排序
在讲OC中数组的排序之前我先上一段代码,它是简单数组排序的一种方法(也就是元素是字符串或者数据的数组,因为后面要讲元素为类的数组排序) 代码1: NSArray *sortArr4 = [sortAr ...
随机推荐
- vs2010中的反编译
有这样的需求,一个.dll文件,如何查看里面的代码呢?网上有很多关于反编译的运用的. http://blog.csdn.net/lyflcear/article/details/8102057 昨天( ...
- linux文件的通用操作方法学习
2014-07-29 23:36:10 在linux下用文件描述符来表示设备文件和普通文件.文件描述符是一个整型的数据,所有对文件的操作都通过文件描述符实现. 文件描述符示文件系统中连接用户空间和内核 ...
- mac os使用homebrew来管理后台服务
在linux下我们经常通过 service 或者 /etc/init.d/来管理我们的后台服务软件,并使用包管理器安装这些软件. 在mac下有homebrew这个好用的工具来安装软件,但是一直没有找到 ...
- WPF之旅(三)- 布局之StackPanel
说到WPF的界面布局,相信很多朋友都写过Html代码.在WPF中,大多数程序都使用类似Web的(flow)流布局.在使用流布局模型时,各种控件可以按特定的要求来排列,在窗口内容发生变化时,比如窗口大小 ...
- 使用IE浏览器下载时候窗口一闪而过
使用IE浏览器下载东西时,窗口一闪而过,那么这个问题怎么处理呢? 解决办法: 1.按住ctrl键进行下载 2.浏览器>工具>internet选项>安全自定义级别>下载文件自动提 ...
- C# 将cookiecontainer写到本地
public static void WriteCookiesToDisk(string file, CookieContainer cookieJar) { using(Stream stream ...
- 微软职位内部推荐-Enterprise Architect - BDE - BJ
微软近期Open的职位: Enterprise ArchitectCloud, HTML5, Big Data and Mobile are technology trends driving pro ...
- C语言标准库函数strcpy与strcmp的简单实现
//C语言标准库函数strcpy的一种简单实现. //返回值:目标串的地址. //对于出现异常的情况ANSI-C99标准并未定义,故由实现者决定返回值,通常为NULL. //参数:des为目标字符串, ...
- 设计模式Builder(建造者)模式
1.出现原因 在软件系统中,有时候会面临着“一个复杂对象”的创建工作,其通常由各个部分的子对象用一定的算法构成:由于需求的变化,这个复杂的对象的各个部分可能面临着剧烈的变化,但是把他们组合在一起的算法 ...
- js获取对象、数组的实际长度,元素实际个数
/*获取对象.数组的长度.元素个数 *@param obj 要计算长度的元素,可以为object.array.string */ function count(obj){ var objType = ...