Objective-C语法之NSSortDescriptor
main.m
#import <Foundation/Foundation.h>
#import "Person.h"
/**
NSSortDescriptor 可以实现按照对象的属性进行排序;支持多个属性排序。比如我们有个Person对象,它有名字(name)和年龄(age)两个属性,我们需要按Person的age属性(降序)和name属性(升序)来输出Person对象数组信息
*/
void testSortDescriptor() {
NSMutableArray *mArrPerson = [[NSMutableArray alloc] initWithCapacity:];
Person *p = [[Person alloc] initWithName:@"KK" age:];
[mArrPerson addObject:p];
p = [[Person alloc] initWithName:@"Candy" age:];
[mArrPerson addObject:p];
p = [[Person alloc] initWithName:@"Wiky" age:];
[mArrPerson addObject:p];
p = [[Person alloc] initWithName:@"Stone" age:];
[mArrPerson addObject:p];
p = [[Person alloc] initWithName:@"Tom" age:];
[mArrPerson addObject:p];
p = [[Person alloc] initWithName:@"Sherlock" age:];
[mArrPerson addObject:p];
p = [[Person alloc] initWithName:@"Alex" age:];
[mArrPerson addObject:p];
p = [[Person alloc] initWithName:@"Keye" age:];
[mArrPerson addObject:p]; NSLog(@"按Person的age属性(降序)和name属性(升序)");
NSSortDescriptor *sortByAge = [[NSSortDescriptor alloc] initWithKey:@"age" ascending:NO];
NSSortDescriptor *sortByName = [[NSSortDescriptor alloc] initWithKey:@"name" ascending:YES];
[mArrPerson sortUsingDescriptors:@[sortByAge, sortByName]];
for (Person *p in mArrPerson) {
NSLog(@"age=%ld, name=%@", p.age, p.name);
}
}
int main(int argc, const char * argv[]) {
@autoreleasepool {
testSortDescriptor();
}
return ;
}
Person.h
#import <Foundation/Foundation.h>
@interface Person : NSObject
@property (nonatomic, strong) NSString *name;
@property (nonatomic, assign) NSInteger age; - (id)initWithName:(NSString *)name age:(NSInteger)age;
@end
Person.m
#import "Person.h" @implementation Person
- (id)initWithName:(NSString *)name age:(NSInteger)age {
if (self = [super init]) {
_name = name;
_age = age;
}
return self;
}
@end
结果:
-- ::13.240 OCNSSortDescriptor[:] 按Person的age属性(降序)和name属性(升序)
-- ::13.241 OCNSSortDescriptor[:] age=, name=Stone
-- ::13.241 OCNSSortDescriptor[:] age=, name=Alex
-- ::13.241 OCNSSortDescriptor[:] age=, name=Keye
-- ::13.241 OCNSSortDescriptor[:] age=, name=Tom
-- ::13.242 OCNSSortDescriptor[:] age=, name=Sherlock
-- ::13.242 OCNSSortDescriptor[:] age=, name=Wiky
-- ::13.242 OCNSSortDescriptor[:] age=, name=KK
-- ::13.242 OCNSSortDescriptor[:] age=, name=Candy
Objective-C语法之NSSortDescriptor的更多相关文章
- 初学Objective - C语法之代码块(block)
一.block声明 1.无参数,无返回值: void (^sayHi)(); 2.有参数,有返回值: NSInteger (^operateOfValue)(NSInteger num); block ...
- [转] 从 C 到 Objective C 入门1
转自: http://blog.liuhongwei.cn/iphone/objective-c/ 进军iPhone开发,最大的难点之一就是怪异的Objective C语法了.不过,了解之后才发现,原 ...
- iOS开发——语法篇OC篇&高级语法精讲二
Objective高级语法精讲二 Objective-C是基于C语言加入了面向对象特性和消息转发机制的动态语言,这意味着它不仅需要一个编译器,还需要Runtime系统来动态创建类和对象,进行消息发送和 ...
- Windows下编译objective-C
Windows下编译objective-C 2011-08-31 14:32 630人阅读 评论(0) 收藏 举报 windowscocoa工具objective clibraryxcode 目录 ...
- ios学习笔记之2天来总结
学了2天,小结下. ios的基本代码执行流程: 与java的基本异同: 异: 1.基类:java中Object是所有类的父类,而objective-c的根类为NSObject 2.默认访问类型:jav ...
- Pentaho BI server 中 CCC table Component 的使用小技巧
我使用的版本 Pentaho BI Server 5.3.0.0.213 CDE/CDF/CDA/CCC 15.04.16 stable Q: 如何设置表格中各种提示文字的语言(默认为英语)? C ...
- OC中protocol、category和继承的关系--转
开放封闭原则(OCP)就是,“对扩展开放,对更改封闭”.是所有面向对象设计的一个核心宗旨.感兴趣的可以看百度百科的一些解释:http://baike.baidu.com/view/2493421.ht ...
- Automake
Automake是用来根据Makefile.am生成Makefile.in的工具 标准Makefile目标 'make all' Build programs, libraries, document ...
- Objective - C中属性和点语法的使用
一.属性 属性是Objective—C 2.0定义的语法,为实例变量提供了setter.getter方法的默认实现能在一定程度上简化程序代码,并且增强实例变量的访问安全性 ...
随机推荐
- Scala开发入门指南
作者:chszs,转载需注明.博客主页:http://blog.csdn.net/chszs 一.下载Scala 当前Scala的最新版本为2.10.2版,Windows有两种发布包: 1)Windo ...
- 2. CNN卷积网络-前向传播算法
1. CNN卷积网络-初识 2. CNN卷积网络-前向传播算法 3. CNN卷积网络-反向更新 1. 前言 我们已经了解了CNN的结构,CNN主要结构有输入层,一些卷积层和池化层,后面是DNN全连接层 ...
- Servlet实例开发---学生管理系统
Servlet总结 本程序采用Servlet开发技术,MVC分层,所有程序在设计时都要接口为操作的标准,主要逻辑操作只有增删改查. 具体实现操作请看源代码. 本程序采用的是MYSQL数据库,需加入相应 ...
- Scala 闭包
Scala 闭包 闭包是一个函数,返回值依赖于声明在函数外部的一个或多个变量. 闭包通常来讲可以简单的认为是可以访问一个函数里面局部变量的另外一个函数. 如下面这段匿名的函数: val multipl ...
- Virtools元素、类和面向对象设计
无意中发现了在某个不存在的网站( https://sites.google.com )上,还存有09年写的一些半成品教材,下面这篇文章就是其中一部分. 概述 Virtools将元素(Element)组 ...
- 中断描述符表(Interrupt Descriptor Table,IDT)
中断描述符表(Interrupt Descriptor Table,IDT)将每个异常或中断向量分别与它们的处理过程联系起来.与GDT和LDT表类似,IDT也是由8字节长描述符组成的一个数组. #pr ...
- compareTo返回值为-1 、 1 、 0 的排序问题
1.什么是Comparable接口 此接口强行对实现它的每个类的对象进行整体排序.此排序被称为该类的自然排序 ,类的 compareTo 方法被称为它的自然比较方法 .实现此接口的对象列表(和数组)可 ...
- Android Studio xcode单步调试 WebRTC Android & iOS
mac环境 如何在 Android Studio 里单步调试 WebRTC Android 的 native 代码. WebRTC 代码下载 depot tools 是 chromium 代码库管理工 ...
- PHP 日期 加减 月数,天数,周数,小时,分,秒等等
实就是strtotime 这个内置函数 //PHP 日期 加减 周 date("Y-m-d",strtotime("2013-11-12 +1 week")) ...
- SpringMVC深度探险(三) —— DispatcherServlet与初始化主线
在上一篇文章中,我们给出了构成SpringMVC应用程序的三要素以及三要素的设计过程.让我们来归纳一下整个设计过程中的一些要点: SpringMVC将Http处理流程抽象为一个又一个处理单元 Spri ...