//

//  main.m

//  05-数组排序

//

//  Created by apple on 14-3-21.

//  Copyright (c) 2014年 apple. All rights reserved.

//

#import <Foundation/Foundation.h>

#import "Person.h"

int main(int argc, const char * argv[])

{

@autoreleasepool {

//1.使用sortedArrayUsingSelector

//也是最简单的排序方式

//数组是按照你存入元素的顺序存储的

NSArray * array = @[@"b",@"d",@"a",@"z"];

NSLog(@"排序前 array %@",array);

array = [array sortedArrayUsingSelector:@selector(compare:)];

//        NSArray * array1 = [array sortedArrayUsingSelector:@selector(compare:)];

NSLog(@"排序后 array %@",array);

//2.使用block方式排序

NSArray * array2 = @[@"z",@"4",@"b",@"3",@"x"];

NSLog(@"array2 排序前 %@",array2);

array2 = [array2 sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2) {

/*

NSComparisonResult retuslt = [obj1 compare:obj2];

return retuslt;

*/

//obj1 compare obj2 就是正序排序

//            return [obj1 compare:obj2];

//obj2 compare obj1 就是倒序排序

return [obj2 compare:obj1];

}];

NSLog(@"array2 排序后 %@",array2);

Person * p1 = [[Person alloc] initWithName:@"xiaozhe" andAge:20 andYear:@"1990"];

Person * p2 = [[Person alloc] initWithName:@"alex" andAge:18 andYear:@"2990"];

Person * p3 = [[Person alloc] initWithName:@"merry" andAge:25 andYear:@"1890"];

NSArray * array3 = @[p1,p2,p3];

NSLog(@"array3 排序前 %@",array3);

//3.使用 给数组排序

//如果你向给你自己定义的对象排序,必须根据某一个属性来排序,

//sortDescriptorWithKey 参数要的就是你对象中,要依据哪个属性来排序,你就把哪个属性的名字当成key传入

//ascending YES表示正序 NO表示倒叙

NSSortDescriptor * d1 = [NSSortDescriptor sortDescriptorWithKey:@"age" ascending:NO];

NSSortDescriptor * d2 = [NSSortDescriptor sortDescriptorWithKey:@"year" ascending:NO];

//如果你要使用多个属性进行排序,默认在前面的NSSortDescriptor优先级比较高

NSArray * descripts = @[d2,d1];

array3 = [array3 sortedArrayUsingDescriptors:descripts];

NSLog(@"array 3 排序后  %@",array3);

//4.

NSArray * array4 = @[p1,p2,p3];

NSLog(@"array4 排序前 %@",array4);

array4 = [array4 sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2) {

Person * p1 = obj1;

Person * p2 = obj2;

//year

return [p1.year compare:p2.year];

}];

NSLog(@"array4 排序后 %@",array4);

}

return 0;

}

nsarray排序的更多相关文章

  1. 【转】NSArray排序方法

    原文网址:http://www.cnblogs.com/xiaobaizhu/archive/2013/06/05/3119983.html 从网上查的,非常方便的排序api,功能也很强大 1.sor ...

  2. NSArray排序方法讲解

    NSArray排序方法讲解 给数组排序有着多种方式 最麻烦的是sortedArrayUsingSelector:,其次是sortedArrayUsingDescriptors:,最容易使用的就是sor ...

  3. [OC Foundation框架 - 8] NSArray排序

    1.派生 voidarrayNew() { NSArray*array = [NSArrayarrayWithObjects:",nil]; NSArray*array2 = [arraya ...

  4. NSDictionary 和NSArray 排序(sort)

    排序: NSMutableDictionary *dic=[[NSMutableDictionary alloc]init]; [dic setValue:@"第3个" forKe ...

  5. NSArray 排序

    先研究一种方法 NSMutableArray *array = [[NSMutableArray alloc] initWithCapacity:]; ; i < ; i++) { ; [arr ...

  6. ios 排序汇总

    ios 排序汇总  IOS几种简单有效的数组排序方法 //第一种,利用数组的sortedArrayUsingComparator调用 NSComparator ,obj1和obj2指的数组中的对象 N ...

  7. 【IOS 开发】Objective-C Foundation 框架 -- 字符串 | 日期 | 对象复制 | NSArray | NSSet | NSDictionary | 谓词

    一. 字符串 API 1. NSString 用法简介 (1) NSString API 介绍 NSString 功能 : -- 创建字符串 : 使用 init 开头的实例方法, 也可以使用 Stri ...

  8. oc72--NSArray排序

    // Person.h #import <Foundation/Foundation.h> @interface Person : NSObject @property (nonatomi ...

  9. NSArary自定义对象排序 NSComparator, compare

    reference from :http://mobile.51cto.com/hot-434804.htm 1.构建Person类 Person.h @interface Person : NSOb ...

随机推荐

  1. windows下Ruby开发环境搭建

    一.下载 下载RubyInstaller 二.安装 按照提示安装 安装完毕后,在cmd命令窗口,输入:ruby -v 查询rbuy版本:输入gem -v 查询gem版本 三.Ruby插件(Redis插 ...

  2. Javascript 笔记与总结(1-5)闭包

    [例1] <script> function t1(){ var age = 20; function t2(){ alert(age); } return t2; } var tmp = ...

  3. EditText小技巧

    1.让EditText不自动获取焦点 将EditText的某个父级控件设置成 android:focusable="true" android:focusableInTouchMo ...

  4. C#winform中ListView及ContextMenuStrip的使用

    1.新建一个Windows窗体应用程序 2.添加文件夹及图片资源 文件夹图片(folder.png),文件图片(file.png) 3.在设计模式下添加控件 即:1个ListView(lvwData) ...

  5. Web前端开发:什么是页面重回(repaints)与回流(reflow)

    前言:什么是重绘与回流? 重绘(repaints)是一个元素外观的改变所触发的浏览器行为,例如改变vidibility.outline.背景色等属性.浏览器会根据元素的新属性重新绘制,使元素呈现新的外 ...

  6. Oracle 删除重复行

    DELETE FROM your_table WHERE rowid not in (SELECT MIN(rowid) FROM your_table GROUP BY column1, colum ...

  7. w_all_checked - js -checkbox 多选、全选、submit、request

    <!doctype html> <html> <head> <meta charset="UTF-8"> </head> ...

  8. 【转】设计模式 ( 十七) 状态模式State(对象行为型)

    设计模式 ( 十七) 状态模式State(对象行为型) 1.概述 在软件开发过程中,应用程序可能会根据不同的情况作出不同的处理.最直接的解决方案是将这些所有可能发生的情况全都考虑到.然后使用if... ...

  9. 【转】CodeIgniter配置之database

    CodeIgniter的数据库配置文件位于application/config/database.php, 该文件中定义了$db的二维数组,参考文件如下: 1 2 3 4 5 6 7 8 9 10 1 ...

  10. svn截图

        一.合并一个范围的版本 此类型应用最为广泛,主要是把分支中的修改合并到主干上来.在主干上点击右键选择合并,然后选择合并类型:合并一个范围的版本.合并的源URL填写的是要合并的分支的URL,待合 ...