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 ...
随机推荐
- python2.7之乱码问题(直接从我的csdn上复制粘贴过来的。。。)
学习python一段时间了,一直没有写过博客.就从今天开始吧! python 3之后当然不存在乱码问题了.python 2的乱码问题有时就有点头疼了.(代码均为在windows下测试) 示例:保存为t ...
- Python原始套接字编程
在实验中需要自己构造单独的HTTP数据报文,而使用SOCK_STREAM进行发送数据包,需要进行完整的TCP交互. 因此想使用原始套接字进行编程,直接构造数据包,并在IP层进行发送,即采用SOCK_R ...
- iOS内存管理retain,assign,copy,strong,weak
转自:http://www.cnblogs.com/nonato/archive/2013/11/28/3447162.html iOS的对象都继承于NSObject, 该对象有一个方法:retain ...
- 微软职位内部推荐-Senior SDE for Win Shell Exp
微软近期Open的职位: Job posting title: Senior Software Development Engineer Location: China, Beijing Divisi ...
- JDBC连接数据库代码
//连接是需要导包 http://pan.baidu.com/s/1o6nyuOa /*配合数据库建立表 create database day14 character set utf8 collat ...
- ajax正确返回数据,却进入了error分支
.net 开发: $.ajax({ type: "POST", //post没有数据量限制 url: "ashx/PostHandle.ashx", data: ...
- 数据库SQLiteDatabase
package com.baclock.entity; import android.provider.BaseColumns; /** * Created by Jack on 5/4/2016. ...
- DevExpress控件使用系列--ASPxGridView+Popup+Tab
1.控件功能 列表控件展示数据.弹框控件执行编辑操作.Tab控件实现多标签编辑操官方说明 2.官方示例 2.1 ASPxGridView http ...
- netbeans 7安装xdebug调试php程序
1.下载安装xdebug 先从xdebug官网下载对应php版本的xdebug组件,下载地址是:http://www.xdebug.org/download.php 如果不确定下载哪个版本的xdebu ...
- POJ 1459 Power Network(网络最大流,dinic算法模板题)
题意:给出n,np,nc,m,n为节点数,np为发电站数,nc为用电厂数,m为边的个数. 接下来给出m个数据(u,v)z,表示w(u,v)允许传输的最大电力为z:np个数据(u)z,表示发电 ...