给数组NSMutableArray排序

在iOS的Cocoa框架上,给NSMutableArray内容排序。

方法一,使用Comparator

Comparator是一个block,需要返回NSComparisonResult类型的值,NSComparisonResult也是一个枚举值,用来比较大小时用到。这个block里需要做的事就是你按照你的标准比较你的NSArray里的对象,根据你的标准返回一个NSComparisonResult的值,下面是示例:

NSMutableArray* arr = [NSMutableArrayarrayWithObjects:  
                           [NSNumber numberWithInt:0],  
                           [NSNumber numberWithInt:3],  
                           [NSNumber numberWithInt:2],  
                           [NSNumber numberWithInt:1],  
                           [NSNumber numberWithInt:7],  
                           [NSNumber numberWithInt:8],  
                           [NSNumber numberWithInt:9],  
                           [NSNumber numberWithInt:10],  
                           [NSNumber numberWithInt:6],  
                           [NSNumber numberWithInt:5],  
                           [NSNumber numberWithInt:4],  
                           nil];  

    // 升序  
    // 0 --> 10  
    [arr sortUsingComparator:^NSComparisonResult(__strong id obj1,__strong id obj2){  
        return [obj1 intValue] > [obj2intValue];  
    }];  

    NSLog(@"%@", [arrdebugDescription]);  

    // 降序  
    // 10 --> 0  
    [arr sortUsingComparator:^NSComparisonResult(__strongid obj1,__strong id obj2){  
        return [obj1 intValue] < [obj2intValue];  
    }];  
     NSLog(@"%@", [arrdebugDescription]);

方法二,使用Array元素本身的方法。

比如如果Array中都是NSString,而NSSString本身提供了compare方法,则直接使用即可,用法如下。

NSArray *array = @[@"abc",@"acc",@"adc",@"Abc",@"111"];

//compare:区分字母大小写
NSArray *testArr = [array sortedArrayUsingSelector:@selector(compare:)];
NSLog(@"%@",[testArr description]);

//caseInsensitiveCompare不区分大小写
NSArray *testArr2 =  [array sortedArrayUsingSelector:@selector(caseInsensitiveCompare:)];
NSLog(@"%@",[testArr description]);

iOS开发最佳实践

Getting on board with iOS can be intimidating. Neither Swift nor Objective-C are widely used elsewhere, the platform has its own names for almost everything, and it's a bumpy road for your code to actually make it onto a physical device. This living document is here to help you, whether you're taking your first steps in Cocoaland or you're curious about doing things "the right way". Everything below is just suggestions, so if you have a good reason to do something differently, by all means go for it!

发布于:1月以前  |  360次阅读  |  详细内容 »

你的 App 在 iOS 13 上被卡死了吗?

自从58同城iOS客户端9.0.0版本上线以来,陆续接到反馈说App有时启动会超时,无法响应,然后被系统杀死,只有重启手机才能恢复。得知存在App无法启动的问题后,我们马上展开了调查。通过对触发此问题的设备进行测试,发现此问题所影响的不仅仅是58同城App的启动,另有如京东、大众点评、腾讯视频等其他App也无法正常打开。

发布于:5月以前  |  830次阅读  |  详细内容 »

iOS开发60分钟入门

本文面向已有其它语言(如Java,C,PHP,Javascript)编程经验的iOS开发初学者,初衷在于让我的同事一小时内了解如何开始开发iOS App,学习目标包括:能使用Xcode IDE、模拟器;能修改、调试已有iOS App;能在已有应用内创建新模块;能创建新应用;能发布应用到App Store

发布于:6月以前  |  516次阅读  |  详细内容 »

快速配置 Sign In with Apple

在 WWDC19 大会上,苹果公司推出了一项有意思的内容,即 “Sign In with Apple”。这项由苹果提供的认证服务,可以让开发者允许用户使用 Apple Id 来登录他们的应用程序。

发布于:9月以前  |  2172次阅读  |  详细内容 »

iOS 流量监控分析

在每一个 HTTP 请求开始时,URL 加载系统创建一个合适的 NSURLProtocol 对象处理对应的 URL 请求,而我们需要做的就是写一个继承自 NSURLProtocol 的类,并通过 - registerClass: 方法注册我们的协议类,然后 URL 加载系统就会在请求发出时使用我们创建的协议对象对该请求进行处理。

发布于:10月以前  |  825次阅读  |  详细内容 »

WWDC 2019 :优秀的开发习惯

成功的APP开发需要掌握方方面面的东西。了解可纳入开发流程的实践以提高你的生产力,提升你APP的性能和稳定性。学习如何提高通过Xcode编写的代码质量。获得一些有价值的开发技术的切实理解。

发布于:11月以前  |  779次阅读  |  详细内容 »

大型 SDK 组件化拆分的一些思考

笔者的任务在初期是比较简单和明确的,要求对于某些模块能够可选集成,使用cocoaPod的时候,是否集成某个模块,不能改动一句代码,有点像友盟的社会组件集成方式,但是比那个应该要复杂一些,后面会细说原因。

发布于:11月以前  |  782次阅读  |  详细内容 »

最多阅读

快速配置 Sign In with Apple 9月以前  |  2172次阅读
给数组NSMutableArray排序 1年以前  |  2016次阅读
UITableViewCell高亮效果实现 1年以前  |  1856次阅读
开篇 关于iOS越狱开发 1年以前  |  1814次阅读
在越狱的iPhone设置上使用lldb调试 1年以前  |  1808次阅读
APP适配iOS11 1年以前  |  1706次阅读
关于Xcode不能打印崩溃日志 1年以前  |  1528次阅读
App Store 审核指南[2017年最新版本] 1年以前  |  1500次阅读
所有iPhone设备尺寸汇总 1年以前  |  1488次阅读
使用ssh访问越狱iPhone的两种方式 1年以前  |  1411次阅读
使用ssh 访问越狱iPhone的两种方式 1年以前  |  1401次阅读
UIDevice的简单使用 1年以前  |  1373次阅读
使用 GPUImage 实现一个简单相机 11月以前  |  1357次阅读
为对象添加一个释放时触发的block 1年以前  |  1294次阅读
使用最高权限操作iPhone手机 1年以前  |  1208次阅读