//  Person.h

#import <Foundation/Foundation.h>

@interface Person : NSObject

@property (nonatomic, assign) int age;
@end
//  Person.m

#import "Person.h"

@implementation Person

- (NSString *)description
{
return [NSString stringWithFormat:@"age = %i", _age];
}
@end
//
// main.m
// NSArray排序 #import <Foundation/Foundation.h>
#import "Person.h" int main(int argc, const char * argv[]) { NSArray *arr1 = @[@, @, @, @, @]; //oc中的数字,@5是oc的对象,
NSLog(@"排序前: %@", arr1);//(10,20,5,7,15)
// 注意: 想使用compare方法对数组中的元素进行排序, 那么数组中的元素必须是Foundation框架中的对象(oc对象), 也就是说不能是自定义对象
NSArray *newArr1 = [arr1 sortedArrayUsingSelector:@selector(compare:)]; //NSArray是不可变的,所以要用新的数组接收。
NSLog(@"排序后: %@", newArr1);//(5,7,10,15,20) Person *p1 = [Person new];
p1.age = ; Person *p2 = [Person new];
p2.age = ; Person *p3 = [Person new];
p3.age = ; Person *p4 = [Person new];
p4.age = ; NSArray *arr = @[p1, p2, p3, p4];
NSLog(@"排序前: %@", arr);//("age = 10","age = 20","age = 5","age = 7") // 按照人的年龄进行排序
// 不能使用compare:方法对自定义对象进行排序
//NSArray *newArr11 = [arr sortedArrayUsingSelector:@selector(compare:)]; // 该方法默认会按照升序排序,NSSortStable表示是安全的,涉及多线程,
NSArray *newArr = [arr sortedArrayWithOptions:NSSortStable usingComparator:^NSComparisonResult(Person *obj1, Person *obj2) {
// 每次调用该block都会取出数组中的两个元素给我们,二分算法,
NSLog(@"obj1 = %@, obj2 = %@", obj1, obj2); //排序算法
return obj1.age > obj2.age;
// return obj1.age < obj2.age;
/*
if (obj1.age > obj2.age) {
// 5 4
return NSOrderedDescending;
}else if(obj1.age < obj2.age)
{
// 4 5
return NSOrderedAscending;
}else
{
return NSOrderedSame;
}
*/
}];
NSLog(@"排序后: %@", newArr);// ("age = 5","age = 7","age = 10","age = 20")
return ;
}

oc72--NSArray排序的更多相关文章

  1. 【转】NSArray排序方法

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

  2. NSArray排序方法讲解

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

  3. nsarray排序

    // //  main.m //  05-数组排序 // //  Created by apple on 14-3-21. //  Copyright (c) 2014年 apple. All rig ...

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

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

  5. NSDictionary 和NSArray 排序(sort)

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

  6. NSArray 排序

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

  7. ios 排序汇总

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

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

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

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

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

随机推荐

  1. 【转载】自制4412底板自动进入SD卡更新模块

    转载自迅为论坛:http://www.topeetboard.com参考平台:迅为iTOP-4412开发板 问题如下:在自制的底板上,当SD卡插在板子上开机时,会自动进入Updating模式,如果SD ...

  2. jquery.ajax之beforeSend方法使用介绍

    常见的一种效果,在用ajax请求时,没有返回前会出现前出现一个转动的loading小图标或者“内容加载中..”,用来告知用户正在请求数据.这个就可以用beforeSend方法来实现. 下载demo:a ...

  3. 以POST方式推送JSON数据,并接收返回的服务器消息

    private static string GetResult(string jsonString, string type) { string url = GetUrl(type); string ...

  4. c# 常用 Common

    /// <summary> /// md5加密字符串 /// </summary> /// <param name="message">< ...

  5. spark学习(3)---集合

    一.list https://blog.csdn.net/xianpanjia4616/article/details/84930779 华为文档:https://support.huawei.com ...

  6. Jmeter - 获取返回结果中的字段值

    Jmeter测试场景:一个web系统,需要先发送登录请求,获取到登录Token之后,后续每次请求都需要在请求头中附带Token才有权限操作.现在需要在Jmeter中自动获取每次登录请求返回的Token ...

  7. Effective C++ 一些记录和思考

    Effective C++ Iter 3 - 尽可能使用 const 一个反逻辑的 bitwise const class Text { ... char& operator[](std::s ...

  8. win10 ubuntu 子系统安装php

    apt-get install python-software-propertiesadd-apt-repository ppa:ondrej/phpapt-get updateapt-get ins ...

  9. php利用32进制实现对id加密解密

    前言 最近在项目中遇到一个问题,当前用户分享一个邀请码给好友,好友根据邀请码注册成为新用户之后,则成为当前用户的下级,特定条件下,可以得到下级用户的一系列返利.这里要实现的就是根据当前用户的id,生成 ...

  10. 使用Mybatis进行连表查询、left join---https://blog.csdn.net/jinzhencs/article/details/51980518

    使用Mybatis进行连表查询.left join https://blog.csdn.net/jinzhencs/article/details/51980518