block 数组排序
#import <Foundation/Foundation.h>
//定义⼀一个block,返回值为BOOL,有两个NSString参数。实现:判
//断字符串是否相等。
BOOL (^compareString)(NSString *, NSString *) = ^(NSString *str1, NSString *str2){
if ([str1 isEqualToString:str2]) {
return YES;
}else{
return NO;
}
};
if (compareString(@"sss",@"sss")) {
NSLog(@"相同");
}
//定义⼀一个block,返回值为NSInteger,有两个参数,⼀一个是 NSArray,⼀一个是NSString。实现:判断数组时候包含此字符串,如 果包含,返回字符串的下标,如果不包括,返回-1。
NSArray *arr = @[@"aa",@"ss",@"ww"];
NSString *str = @"ss";
int (^find)(NSArray *, NSString *) = ^(NSArray *arr, NSString *str ){
for (int i = 0; i < arr.count; i++) {
if ([arr[i] isEqualToString:str]) {
return i;
}
}
return -1;
};
int f = find(arr,str);
NSLog(@"%d",f);
//创建⼀一个数组,初始化为@“123",@"21",@"33",@"69", @“108”,
//@“256”。使⽤用Block语法,进⾏行数组的排序。并输出内容。 排序结果:108 123 21 256 33 69
//提⽰示:sortedArrayWithOptions:usingComparator:
//不可变数组
NSArray *arr1 = @[@"23", @"1", @"3", @"2", @"108"];
NSArray *arr2 = [arr1 sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2){
if ([obj1 intValue] > [obj2 intValue]) {
return NSOrderedDescending;
}
return NSOrderedSame;
}
];
NSLog(@"sortArray1:%@", arr2);
NSArray *arr11 = @[@"23", @"1", @"3", @"2", @"108"];
NSArray *a1 = [arr11 sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2){
if ([obj1 intValue] > [obj2 intValue]) {
return NSOrderedDescending;
}
return NSOrderedSame;
}];
NSLog(@"sortArray1:%@", a1);
//5, 给可变数组排序的block
//5,1
NSComparator sortBlock = ^(id string1, id string2)
{
return [string1 compare:string2];
};
NSMutableArray *stringArray = [NSMutableArray arrayWithObjects:@"g", @"c", @"b", @"a",nil];
NSArray *a = [stringArray sortedArrayUsingComparator:sortBlock];
NSLog(@"Array:%@", a);
//分开写的block 不可变数组
NSComparator sortBlock1 = ^(id string1, id string2)
{
return [string1 compare:string2];
};
NSArray *stringArray2 = [NSArray arrayWithObjects:@"g", @"c", @"b", @"a",nil];
NSArray *a2 = [stringArray2 sortedArrayUsingComparator:sortBlock1];
NSLog(@"分开写的block 可变数组:%@", a2);
//4. 使用Block根据Person的age进行排序,并输出
[array sortUsingComparator:^NSComparisonResult(Person *p1 ,Person *p2){
if([p1 age] > [p2 age])
return NSOrderedDescending;
else
return NSOrderedSame;
}];
/*
//根据年龄 升序排列
[array sortUsingComparator:^NSComparisonResult(id p1, id p2){
if ([p1 age] > [p2 age]) { // <:降序. >:升序
return NSOrderedDescending;
}
return NSOrderedSame;
}];
*/
block 数组排序的更多相关文章
- OC 06 Block、数组高级
主要内容: ⼀.Block语法 ⼆.Block使⽤ 三.Block实现数组排序 Block简介 Block:块语法,本质上是匿名函数(没有名称的函数) 标准C⾥面没有Block,C语⾔言的后期扩展版本 ...
- 2015最新iOS学习线路图
iOS是由苹果公司开发的移动操作系统,以xcode为主要开发工具,具有简单易用的界面.令人惊叹的功能,以及超强的稳定性,已经成为iPhone.iPad 和iPod touch 的强大基础:iOS 内置 ...
- (2018干货系列十一)最新iOS学习路线整合
怎么学iOS iOS是由苹果公司开发的移动操作系统,以xcode为主要开发工具,具有简单易用的界面.令人惊叹的功能,以及超强的稳定性,已经成为iPhone.iPad 和iPod touch 的强大基础 ...
- OC:Block语法、Block使用、Block实现数组排序
Block //定义一个求两个数最大值函数 int maxValue (int ,int); //函数的实现 int maxValue (int a, int b){ return a > b ...
- Objective-C中Block语法、Block使用以及通过Block实现数组排序
Block:语法块,本质上是匿名函数(没有名称的函数) 标准C里面没有Block,C语言的后期扩展版本,加入了匿名函数 在C++.JS.Swift等语言有类似语法,叫做闭包 Block语法和C语言里的 ...
- Objective C中数组排序几种情况的总结
总结OC中数组排序3种方法:sortedArrayUsingSelector:;sortedArrayUsingComparator:;sortedArrayUsingDescriptors: 数组排 ...
- Objective-C 代码块(block)的使用
代码块本质上是和其他变量类似.不同的是,代码块存储的数据是一个函数体.使用代码块是,你可以像调用其他标准函数一样,传入参数数,并得到返回值. 脱字符(^)是块的语法标记.按照我们熟悉的参数语法规约所定 ...
- 简单的block
int multi = 7; int (^myBlock)(int) = ^(int num){ return num * multi; ...
- Runtime 、 Block
1 使用Block方式,对学生对象进行排序. 1.1 问题 在iOS4.0+ 和Mac OS X 10.6+ 中添加了Block概念,以对C语言进行扩展.在Block中可以定义参数列表.返回类型,还可 ...
随机推荐
- 异常Address already in use: JVM_Bind的处理
如题,Address already in use: JVM_Bind这个异常的意思就是说jvm被占用了 那么大家一般的解决情况都是重启一下eclipse , 结果还是不行,结果就只能重启电脑了. 对 ...
- visual studio 2015 企业版 序列号及官方下载地址
VisualStudio 2015 正式版已经可以通过官方下载了. Visual Studio 是一套基于组件的软件开发工具和其他技术,可用于构建功能强大.性能出众的应用程序.Visual Studi ...
- [RxJS] Transformation operator: map and mapTo
We made our first operator called multiplyBy, which looks a bit useful, but in practice we don't nee ...
- Qt 学习之路:QML 组件
前面我们简单介绍了几种 QML 的基本元素.QML 可以由这些基本元素组合成一个复杂的元素,方便以后我们的重用.这种组合元素就被称为组件.组件就是一种可重用的元素.QML 提供了很多方法来创建组件.不 ...
- Android 根据屏幕分辨率自动调整字体大小
1.在oncreate 里获取手机屏幕宽和高度 DisplayMetrics dm = new DisplayMetrics(); getWindowManager().getDefaultDispl ...
- Java基础知识强化之集合框架笔记44:Set集合之TreeSet保证元素唯一性和自然排序的原理和图解
1. TreeSet保证元素唯一性和自然排序的原理和图解 2. TreeSet唯一性以及有序性底层剖析: 通过观察TreeSet的add()方法,我们知道最终要看TreeMap的put()方法. 跟踪 ...
- 你的网站为什么会慢?——用YSlow为你的网站提速
在前面的文章我翻译的文章中分别从内容.服务器.JavaScript和CSS.图片.Coockies和移动应用等几个方面总结了34条提高网站性能的黄金守则,但是这些守则中,有一些是不常用到的,若非有实力 ...
- ASP.NET 动态属性筛选和分页绑定
分页控件为:AspNetPager.dll 我们先建立一个产品属性名称表 CREATE TABLE ProductAttr ( ,) NOT NULL primary key, [ParentID] ...
- linux 简单命令
很久没有接触linux了,很多命令也忘记了,现在自己独立安装一个linux,独立安装LAMP,让自己记录下来这段. 怎么进入命令行 init 3, 回到桌面 init 5在不是root用户情况下,切换 ...
- instanceof的用法②
其实这个问题以前也困扰过我.我个人理解的一个应用场合就是,当你拿到一个对象的引用时(例如参数), 你可能需要判断这个引用真正指向的类.所以你需要从该类继承树的最底层开始,使用instanceof操作符 ...