以下为自定义的排序方式的实现

 #import "Person+Compare.h"

 @implementation Person (Compare)
-(NSComparisonResult)CompareByName:(Person*)aPerson
{
return [self.name compare:aPerson.name];
}
-(NSComparisonResult)CompareByAge:(Person*)aPerson
{
if(self.age > aPerson.age)
return NSOrderedDescending;
else if (self.age < aPerson.age)
return NSOrderedAscending;
else
return NSOrderedSame;
}
@end

  主函数测试:

  

#import <Foundation/Foundation.h>

#import "Person+Compare.h"

#import "Person.h"

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

{

@autoreleasepool

{

NSMutableArray *personArray = [[NSMutableArray alloc]initWithCapacity:20];

[personArray addObject:[Person personWithName:@"Tom" andAge:20]];

[personArray addObject:[Person personWithName:@"Smith" andAge:21]];

[personArray addObject:[Person personWithName:@"Jhon" andAge:19]];

[personArray addObject:[Person personWithName:@"Bruth" andAge:24]];

//按姓名排序

NSMutableArray *sortedByName = [NSMutableArray arrayWithArray:[personArray sortedArrayUsingSelector:@selector(CompareByName:)]];

NSLog(@"%@",sortedByName);

//按年龄排序

NSMutableArray *sortedByAge = [NSMutableArray arrayWithArray:[personArray sortedArrayUsingSelector:@selector(CompareByAge:)]];

NSLog(@"%@",sortedByAge);

}

return 0;

}

  测试结果为:

-- ::26.997 可变数组的排序[:] (
"name=Bruth,age=24",
"name=Jhon,age=19",
"name=Smith,age=21",
"name=Tom,age=20"
)
-- ::26.998 可变数组的排序[:] (
"name=Jhon,age=19",
"name=Tom,age=20",
"name=Smith,age=21",
"name=Bruth,age=24"
)
Program ended with exit code:

OBjective-C:在可变数组NSMutableArray中添加相同对象后,进行自定义的排序方式输出的更多相关文章

  1. 可变数组NSMutableArray

    //创建一个空的可变数组 NSMutableArray *array = [NSMutableArray array]; //向数组里面添加对象 [array addObject:@"< ...

  2. 【转】不可变数组NSArray与可变数组NSMutableArray

    原文网址:http://www.jianshu.com/p/1ad327f56d1d 不可变数组NSArray //创建一个空数组 NSArray *array = [NSArray array]; ...

  3. THREE.JS(如何想场景中添加物体对象)

    这篇主要实现向模型对象中添加头像,并组成一个矩形 一.three.js是什么? 上篇说了点TWEEN这篇又来一根THREE是不是两兄弟啊?还真有点像,当想要做3D动画的时候,可能会考虑用TWEEN的动 ...

  4. 在NSMutableArray中添加空元素:NSNull类的使用

    有时需要将一些表示“空”的对象添加到array中.NSNull类正是基于这样的目的产生的.用NSNull表示一个占位符时,语句表达如下: [array addObject:[NSNull null]] ...

  5. 在使用可变数组过程中遇到*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: '-[__NSCFDictionary setObject:forKey:]: mutating method sent to immutable object'问题

    *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: '-[__NSCFD ...

  6. OC—可变数组NSMutableArray

  7. SSM-MyBatis-12:Mybatis中添加单个对象返回主键id列

    ------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- 实体类 public class Book { private Integer bookID; private ...

  8. AutoCAD.NET中添加图形对象的基本步骤与实例演示

    https://blog.csdn.net/u011170962/article/details/37755201 要创建一个图形对象,需要遵循下面的步骤:1.得到创建对象的图形数据库:2.在内存中创 ...

  9. HTTP 错误 404.3 - Not Found 由于扩展配置问题而无法提供您请求的页面。如果该页面是脚本 ,请添加处理程序。如果下载文件,请添加 MIME 映射。 IIS站点中添加WCF项目后浏览网站报错解决方法。

    vs2013 wcf服务 windows10 家庭中文版 上图中的红色没有出现就按照下面的方法做: 按照上图所示勾选. 刷新上图中你的网站,查看上图右边的内容是否出现,如果出现,再次重新浏览网站,看一 ...

随机推荐

  1. Centos 7.2 安装 Python 3.5(适用于Python 3所有版本安装)

    提示:我们必须不能破坏系统的环境.因为几个关键的应用程序依赖于Python 2.7.5(centos 7默认版本).如果替换了系统的Python环境就会发生很多难以预见的错误,甚至要重装系统. 安装前 ...

  2. matplotlib使用总结

    一.简介 Matplotlib 是一个 Python 的 2D绘图库,它以各种硬拷贝格式和跨平台的交互式环境生成出版质量级别的图形.通过 Matplotlib,开发者可以仅需要几行代码,便可以生成绘图 ...

  3. 喜大普奔!Django官方文档终于出中文版了

    喜大普奔!Django官方文档终于出中文版了 文章来源:企鹅号 - Crossin的编程教室 昨天经 Sur 同学告知才发现,Django 官方文档居然支持中文了! 之所以让我觉得惊喜与意外,是因为: ...

  4. java_String、StringBuilder

    在介绍String和StringBuilder前先学习一下equals方法和toString方法.API java1.6提取码:04b6 equals方法 equals方法,用于比较两个对象是否相同, ...

  5. Android 中的广播(Broadcast)

    Android 广播(broadcast) 饮水思源 本文章内容学习和总结自 郭霖大神:<Android第一行代码> Overview 就像我们的学校里的喇叭一样,是用来通知的.而Andr ...

  6. [python 源码]字符串对象的实现

    还是带着问题上路吧,和整数对象的实现同样的问题: >>> a='abc' >>> b='abc' >>> a is b True >> ...

  7. [leetcode shell]192. Word Frequency

    统计words.txt中每个单词出现的次数并排序 解法1: cat words.txt | tr -s ' ' '\n' | sort | uniq -c | sort -r | awk '{prin ...

  8. 网络数据修改工具netsed

    网络数据修改工具netsed   通过修改网络数据,可以绕过软件和防火墙的限制,达到特定的目的.Kali Linux提供一个简易数据修改工具netsed.该工具支持对TCP和UDP的数据进行修改.渗透 ...

  9. python sys.argv[]的用法简明解释

    sys模块中文参考文档:http://xukaizijian.blog.163.com/blog/static/170433119201111625428624/ sys.argv[]: 「argv」 ...

  10. nodejs环境使用jshint

    一.概述jshint是检测JavaScript语法问题的工具,可以根据自己的需要配置检测规则. 二.安装npm install jshint -g一般全局安装就可以了,可以在任何目录下使用jshint ...