我的OC成长之路(复习)

一、数组

1.简单的数组排序(sortedArrayUsingSelector:)

NSArray *array = @[@123,@7889,@231];
NSArray *sortArray =[array sortedArrayUsingSelector:@selector(compare:)];
NSLog(@"%@",sortArray);

  //字符串对比,会根据逐个字符进行对比排序

NSComparisonResult compare(id obj1,id obj2){
    if (obj1 < obj2) {
        return NSOrderedAscending;//升序
    }
    if (obj1 > obj2) {
        return NSOrderedDescending;//降序
    }else return NSOrderedSame;//相同
}

2.使用block语法(sortedArrayUsingCompartor)

NSArray *sortArray2 = [array sortedArrayUsingComparator: ^NSComparisonResult(id _Nonnull obj1,id _Nonnull obj2){
            if (obj1 < obj2) {
                return NSOrderedAscending;//升序
            }
            if (obj1 > obj2) {
                return NSOrderedDescending;//降序
            }else return NSOrderedSame;//相同
        }];

3.高级排序(sortedArrayUsingDescriptors:)

  main

Person *p1 = [[Person alloc] init];
p1.name = @"Jack";
p1.age = 17;
Person *p2 = [[Person alloc]initWithName:@"Mary" andAge:19];
Person *p3 = [[Person alloc]initWithName:@"Hop" andAge:22];
NSArray *obj = [NSArray arrayWithObjects:p1,p2,p3,nil];
//创建排序描述器
NSSortDescriptor *nameDescriptor = [NSSortDescriptor sortDescriptorWithKey:@"name" ascending:YES];
NSSortDescriptor *ageDescriptor = [NSSortDescriptor sortDescriptorWithKey:@"age" ascending:YES];

//将描述器再装起来
NSArray < NSSortDescriptor *>*descriptorArray =[NSArray arrayWithObjects:nameDescriptor ,ageDescriptor,nil];
NSArray *sortArray3 = [obj sortedArrayUsingDescriptors:descriptorArray];
NSLog(@"%@",sortArray3);

  .h

#import <Foundation/Foundation.h>

@interface Person : NSObject

@property (nonatomic,copy) NSString *name;
@property (nonatomic,assign) int age;

- (id)initWithName:(NSString *)name andAge:(int)age;
- (NSString *)description;

@end

  .m

#import "Person.h"

@implementation Person

- (id)initWithName:(NSString *)name andAge:(int)age{

    if (self = [super init]) {
        _name = name;
        _age = age;
    }
    return self;
}

- (NSString *)description{
    return [NSString stringWithFormat:@"name = %@ age = %d",_name,_age];
}

@end

二、字典

1.第一种排序方法

NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:@23232,@"A",@7878,@"B", nil];
[dict keysSortedByValueUsingSelector:@selector(compare:)];
 NSLog(@"%@",dict);

2.第二种排序方法

[dict keysSortedByValueUsingComparator:^NSComparisonResult(id  _Nonnull obj1, id  _Nonnull obj2) {
  if (obj1 < obj2) {
     return NSOrderedAscending;//升序
   }
   if (obj1 > obj2) {
     return NSOrderedDescending;//降序
   }else return NSOrderedSame;//相同}];
NSLog(@"%@",dict);

  

  

时间: 2024-11-06 17:10:20

我的OC成长之路(复习)的相关文章

OC成长之路 &lt;一&gt; 位运算符、枚举、(原码,补码,反码)、以及NSInteger,NSUInteger,int的区别

引言: 咳咳,首先我是一枚资深小白(资深小白- -.也太衰),这个博客是自己用来记录迷糊犯二的东西. 最近发现难道是因为老了么(我明明18....),很多东西,脑子已经不记得了,迷迷糊糊,概念理论的东西脑子里面七零八落. 从一个知识点跳到另一个知识点,简直是连环事故. ??sad. 傲娇的我不服,决心要认认真真做好笔记,记录期间遇见的种种. 生活要有仪式感,学习应该也是要这样,作为Chapter 1 ,应该要起个好名字. 想了几十分钟,还是随便一些吧. 那就叫: OC成长之路 okok,来开始今

我的OC成长之路(复习之日期与时间)

注意: 1.计算当月内的日历 计算一个月内总共有几天: // 获取当月的天数 - (NSInteger)getNumberOfDaysInMonth { NSCalendar * calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar]; // 指定日历的算法 NSDate * currentDate = [NSDate date]; // 这个日期可以你自己给定 NSRange range =

我的OC成长之路(复习之字符串)

注意点: 1.fromIndex,toIndex,withRange 从哪个位置其到尾,从开头到哪个位置,从哪到哪之间的位置. 不过,这里需要注意的是,这个index是数组的下标的.从0开始算. 2.NSMutableString继承于NSString,NSString能用的方法,NSMutableString都能用. 3.NSMutableString追加字符串时,本身序列发生变化,无需重新赋值 一.不可变字符串NSString 1. 初始化方法 unichar data[6] = {97 ,

我的OC成长之路(复习之数组)

注意: 1.因为数组和字典中存放的只能是对象类型. 所以一般的数值是不能直接存入的, 只能转化成对象元素才能存入! 2. NSArray 用于对象有序集合 NSSet 用于对象无序集合 NSDictionary 用于键值映射 3.数组中所有元素不能是基本数据类型,否则会编译报错,如果有需要封装成NSNumber类或NSValue类. 4.数组在NSLog中可以作为对象直接输出,此时建议重写NSObject的-(NSString *)description方法. 5.数组中可以存储自定义类的对象,

我的OC成长之路(日期与时间)

一.NSDate NSDate对象代表日期与时间,Objective-C提供了类方法来创建NSDate对象,也提供了大量init开头的方法来初始化NSDate对象. ①获取代表当前日期.时间的NSDate NSDate *date1 = [NSDate date]; ②获取从当前时间开始1天之后/三天之前的日期 NSDate *date2 = [[NSDate alloc]initWithTimeIntervalSinceNow:3600*24]; NSDate *date3 = [[NSDat

我的OC成长之路(文件管理)

注意: 措施名称 描述 -(NSData *)contentsAtPath:path 从path所代表的文件中读取数据 -(BOOL)createFileAtPath:path contents:(BOOL)data attributes:attr 将数据写入文件 -(BOOL)removeFileAtPath:path handler:handler 将path所代表的文件删除 -(BOOL)movePath:from toPath:to handler:handler 移动或者重命名文件,t

我的OC成长之路(UI-View)

一.UIVIew 属性 1.frame 位置和尺寸(以父控件的左上角为原点(0,0)) 2.center 中点 (以父控件的左上角为原点(0,0)) 3.bounds 位置和尺寸(以自己的左上角为原点 (0,0)) 4.transform 形变属性(缩放,旋转) 5.backgroundColor 背景颜色 6.tag 标识(父控件可以根据这个标识找到对应的子控件,同一个父控件中的子控件不要一样) 7. hidden 设置是否要隐藏 8.alpha 透明度(0~1); 9.opaque 不透明度

菜鸟程序员的成长之路(三)——2014,逝去的半年,奋斗的半年

从3月份到现在,仅仅半年的时间让我扮演了两个完全不同的角色,从在校生一下变成了毕业生,作为毕业生不能再像在校生一样自由自在,无所顾忌,想怎样就怎样,肆无忌惮的生活,浪费时间.如果你想从容的面临未来的生活,就需要彻头彻尾的改变.多一份稳重,多一份责任,多一份担当. 鉴于LZ不太擅长写非技术博文,那就以碎碎念的形式,来回顾一下我的奋斗历程: 技术 3月份开始备战软考,软考准备了两个多月的时间,从看视频做笔记,再到大家一起讲课,复习,做试题巩固,整个过程至今历历在目.软考虽然不难,但是对于基础差的同学

大二女生web开发成长之路——讲述我从软妹子到女汉子的进阶过程

学习和实践前端一年时间,几乎天天在工作室和一群屌丝男程序员一起学习.开发.这种潜移默化的环境下,编码提高了,节操也细碎了. 一年前,娇滴滴的还是工作室里面小师妹一枚,软软的软件工程妹子,做不到人见人爱,但在这个据说男女比例8比1的学校中,仍是比较受欢迎群体——女生中的一员. 然而,    回想过去这一年,跟一帮大老爷们坐在一起讲蛋疼的笑话: 工作室聚餐中满怀“邪”意地企图把师兄们灌醉: 为了赶项目,可以经常和某位苦逼男一起debug到两三点,不亦乐乎: 男生唤我作欣姐,各种玩笑各种开,因为都不拿