#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 数组排序的更多相关文章

  1. OC 06 Block、数组高级

    主要内容: ⼀.Block语法 ⼆.Block使⽤ 三.Block实现数组排序 Block简介 Block:块语法,本质上是匿名函数(没有名称的函数) 标准C⾥面没有Block,C语⾔言的后期扩展版本 ...

  2. 2015最新iOS学习线路图

    iOS是由苹果公司开发的移动操作系统,以xcode为主要开发工具,具有简单易用的界面.令人惊叹的功能,以及超强的稳定性,已经成为iPhone.iPad 和iPod touch 的强大基础:iOS 内置 ...

  3. (2018干货系列十一)最新iOS学习路线整合

    怎么学iOS iOS是由苹果公司开发的移动操作系统,以xcode为主要开发工具,具有简单易用的界面.令人惊叹的功能,以及超强的稳定性,已经成为iPhone.iPad 和iPod touch 的强大基础 ...

  4. OC:Block语法、Block使用、Block实现数组排序

    Block //定义一个求两个数最大值函数 int maxValue (int ,int); //函数的实现 int maxValue (int a, int b){ return  a > b ...

  5. Objective-C中Block语法、Block使用以及通过Block实现数组排序

    Block:语法块,本质上是匿名函数(没有名称的函数) 标准C里面没有Block,C语言的后期扩展版本,加入了匿名函数 在C++.JS.Swift等语言有类似语法,叫做闭包 Block语法和C语言里的 ...

  6. Objective C中数组排序几种情况的总结

    总结OC中数组排序3种方法:sortedArrayUsingSelector:;sortedArrayUsingComparator:;sortedArrayUsingDescriptors: 数组排 ...

  7. Objective-C 代码块(block)的使用

    代码块本质上是和其他变量类似.不同的是,代码块存储的数据是一个函数体.使用代码块是,你可以像调用其他标准函数一样,传入参数数,并得到返回值. 脱字符(^)是块的语法标记.按照我们熟悉的参数语法规约所定 ...

  8. 简单的block

    int multi = 7;                int (^myBlock)(int) = ^(int num){            return num * multi;       ...

  9. Runtime 、 Block

    1 使用Block方式,对学生对象进行排序. 1.1 问题 在iOS4.0+ 和Mac OS X 10.6+ 中添加了Block概念,以对C语言进行扩展.在Block中可以定义参数列表.返回类型,还可 ...

随机推荐

  1. sql 数据字段类型

    bit    整型 bit数据类型是整型,其值只能是0.1或空值.这种数据类型用于存储只有两种可能值的数据,如Yes 或No.True 或False .On 或Off. 注意:很省空间的一种数据类型, ...

  2. winform 播放声音方式 分类: WinForm 2014-07-25 14:16 194人阅读 评论(0) 收藏

    声音文件folder.wav放置在bin目录下debug下 1.通过API调用 [c-sharp] view plaincopy using System.Runtime.InteropService ...

  3. OS开发网络篇—监测网络状态

    iOS开发网络篇—监测网络状态 一.说明 在网络应用中,需要对用户设备的网络状态进行实时监控,有两个目的: (1)让用户了解自己的网络状态,防止一些误会(比如怪应用无能) (2)根据用户的网络状态进行 ...

  4. NIO设置SO_LINGER引发的异常

    欢迎关注Github:https://github.com/teaey/ ### 背景 银时跟我讲,想从 Netty3迁移到Netty4 . 问其原因是由于 Netty3在容器里会报错,错误堆栈: j ...

  5. Web App和Native App 谁将是未来

    未来是Web App的天下,还是Native App的天下?作为设计师,我们是应该努力把客户端的体验提升到最优,还是在网页应用层面上做更多的设计?这个一直是大家关心的话题.那么,我们首先应该立体的认识 ...

  6. WKWebView使用过程中的那些坑

    问题产生背景: 新开发的页面中有一部分的界面是需要展示后端接口返回的HTML代码,包括文字和图片.所以就自然而然的要使用iOS原生的WebKit. 鉴于Xcode 8发布以后,编译器支持的最低版本(D ...

  7. Bash远程文件传输命令scp

    备份远程文件(远程——>本地) scp -r 远程用户名@ip:文件绝对路径 本地绝对路径 还原远程文件(本地——>远程) scp -r 本地路径 远程用户名@ip:远程绝对路径 如果SS ...

  8. oracle数组定义与使用

    定义固定长度的一维数组 type type_array is varray(10) of varchar2(20); 1.varray(10)表示定义长度为10的数组 2.varchar2(20)表示 ...

  9. myEclipse修改deploy location

  10. SQL语句之三简单增删改查

    这是前面建的库和表 USE Test go INSERT dbo.MyTable --插入数据         ( NAME ,age) VALUES  ( '数据,20  -- NAME - var ...