NSArry基本用法
来源:互联网 发布:oracle的sql developer 编辑:程序博客网 时间:2024/05/16 09:42
创建数组
//类方法创建数组(空数组,没有意义) NSArray *array = [NSArray array]; //实例方法创建数组(空数组) NSArray *array1 = [[NSArray alloc]init]; //创建一个数组并初始化元素 nil表示数组结束 NSArray *array2 = [NSArray arrayWithObjects:@"wukong",@"八戒",@"baigujing", nil]; //用一个数组去创建一个新数组(相当于数组拷贝) NSArray *array3 = [NSArray arrayWithArray:array2]; //快速创建 NSArray *array4 = @[@"1",@"ret",@"frsgdfh"]; //实例方法指定对象创建数组 NSArray *array5 = [[NSArray alloc]initWithObjects:@"3",@"JDS",@"f", nil];
//数组元素个数 NSLog(@"%ld",[array5 count]); //访问数组元素 NSLog(@"%@",[array5 objectAtIndex:1]); NSLog(@"%@",array5[1]); //是否包含某一对象(调用这个对象的isEqual方法) BOOL isContain = [array containsObject:@"1"]; //字符串切割成数组 NSString *string7 = @"20|http://www.baidu.com"; NSArray *a = [string7 componentsSeparatedByString:@"|"]; for (int i = 0; i < [a count]; i++) { NSLog(@"%@",a[i]); }
可变数组
//创建可变数组(不能像NSArray那样快速创建) NSMutableArray *mArray = [NSMutableArray array]; NSMutableArray *mutableArray1 = [[NSMutableArray alloc]init];//实例变量初始化 //创建时该数组可容纳元素个数 NSMutableArray *arr = [NSMutableArray arrayWithCapacity:10];
//添加数组元素 [mutableArray1 addObject:@"xiaobai"]; //添加多个数组元素 mutableArray1.array = @[@"ds",@"3",@"rt"]; //在指定下标插入元素 [mutableArray1 insertObject:@"xiaohei" atIndex:1]; //删除数组末尾元素 [mutableArray1 removeLastObject]; //删除所有元素 [mutableArray1 removeAllObjects]; //根据元素对象删除数组对应元素(通过isEqual方法比较) [mutableArray1 removeObject:@"xiaohei"]; //根据数组元素下标,删除对应元素 [mutableArray1 removeObjectAtIndex:0]; //遍历数组 NSArray *array6 = [NSArray arrayWithObjects:@"Naruto",@"Luffy",@"Sasuke",@"Zoro",@"Conan",@"Kakashi", nil]; for (int i = 0; i < [array6 count]; i++) { NSLog(@"%@",[array6 objectAtIndex:i]); NSLog(@"%@",array6[i]); } for (NSString *str in array6) { NSLog(@"%@",str); } //获取数组第一个元素 NSLog(@"%@",[array6 firstObject]); //获取数组最后一个元素 NSLog(@"%@",[array6 lastObject]); // 字符串转数组 NSString *string = @"1 2 3 4 5 6"; // 使用字符串来分割原来的字符串成一个数组 NSArray *array14 = [string componentsSeparatedByString:@" "]; NSLog(@"%@",array14); // 把数组组装字符串 NSString *str = [array componentsJoinedByString:@"-"]; NSLog(@"%@",str); // 让数组中的所有元素执行某个方法 [array makeObjectsPerformSelector:@selector(bark)]; [array makeObjectsPerformSelector:@selector(eat:) withObject:@"骨头"]; //遍历数组 // 使用普通for NSArray *arr3 = @[@"re",@"fd",@"s"]; for (int index = 0; index < array.count; index++) { NSString *sss = array[index]; NSLog(@"%@",sss); } // 使用增加for(最常用) for (NSString *str in arr) { NSLog(@"%@",str); } // 通过枚举器 NSEnumerator *enumer = [arr objectEnumerator]; NSString *newDog; while (newDog = [enumer nextObject]) { NSLog(@"%@",newDog); } // 通过block方式 // idx 表示这个元素在数组索引 // stop 设置为YES 那么就不往后遍历的 [arr enumerateObjectsUsingBlock:^(NSString * dog, NSUInteger idx, BOOL *stop) { NSLog(@"%@-%zd",dog,idx); if (idx == 2) { *stop = YES; } }]; // 使用比较器(block)// array = [array sortedArrayUsingComparator:^NSComparisonResult(CZDog * obj1, CZDog * obj2) {// // if(obj1.age == obj2.age){// return [obj1.name compare:obj2.name];// }else if(obj1.age > obj2.age){// return NSOrderedDescending;//降序// }else{// return NSOrderedAscending;//升序// }//// return [obj1.name compare:obj2.name];// }];// NSLog(@"%@",array); //属性描述器比较 NSSortDescriptor *desc1 = [NSSortDescriptor sortDescriptorWithKey:@"age" ascending:YES]; NSSortDescriptor *desc2 = [NSSortDescriptor sortDescriptorWithKey:@"name" ascending:YES]; array = [array sortedArrayUsingDescriptors:@[desc1,desc2]]; NSLog(@"%@",array);
数组元素拼接字符串
[array componentsJoinedByString:@""];
数组排序
NSArray *array = [self.modelArray sortedArrayUsingComparator:^NSComparisonResult(FriendModel* obj1, FriendModel* obj2) { if (obj1.time.integerValue > obj2.time.integerValue) { return (NSComparisonResult)NSOrderedDescending; }else{ return (NSComparisonResult)NSOrderedAscending; } // [self getCommentAndPraise]; }]
#pragma mark 数组排序1 void arraySort1() { NSArray *array = [NSArray arrayWithObjects:@"2", @"3", @"1", @"4", nil nil]; // 返回一个排好序的数组,原来数组的元素顺序不会改变 // 指定元素的比较方法:compare: NSArray *array2 = [array sortedArrayUsingSelector:@selector(compare:)]; NSLog(@"array2:%@", array2); } #pragma mark 数组排序2 void arraySort2() { Student *stu1 = [Student studentWithFirstname:@"MingJie" lastname:@"Li"]; Student *stu2 = [Student studentWithFirstname:@"LongHu" lastname:@"Huang"]; Student *stu3 = [Student studentWithFirstname:@"LianJie" lastname:@"Li"]; Student *stu4 = [Student studentWithFirstname:@"Jian" lastname:@"Xiao"]; NSArray *array = [NSArray arrayWithObjects:stu1,stu2,stu3, stu4, nil nil]; // 指定排序的比较方法 NSArray *array2 = [array sortedArrayUsingSelector:@selector(compareStudent:)]; NSLog(@"array2:%@", array2); } - (NSComparisonResult)compareStudent:(Student *)stu { // 先按照姓排序 NSComparisonResult result = [self.lastname compare:stu.lastname]; // 如果有相同的姓,就比较名字 if (result == NSOrderedSame) { result = [self.firstname compare:stu.firstname]; } return result; } #pragma mark 数组排序3 void arraySort3() { Student *stu1 = [Student studentWithFirstname:@"MingJie" lastname:@"Li"]; Student *stu2 = [Student studentWithFirstname:@"LongHu" lastname:@"Huang"]; Student *stu3 = [Student studentWithFirstname:@"LianJie" lastname:@"Li"]; Student *stu4 = [Student studentWithFirstname:@"Jian" lastname:@"Xiao"]; NSArray *array = [NSArray arrayWithObjects:stu1,stu2,stu3, stu4, nil nil]; // 利用block进行排序 NSArray *array2 = [array sortedArrayUsingComparator: ^NSComparisonResult(Student *obj1, Student *obj2) { // 先按照姓排序 NSComparisonResult result = [obj1.lastname compare:obj2.lastname]; // 如果有相同的姓,就比较名字 if (result == NSOrderedSame) { result = [obj1.firstname compare:obj2.firstname]; } return result; }]; NSLog(@"array2:%@", array2); } #pragma mark 数组排序4-高级排序 void arraySort4() { Student *stu1 = [Student studentWithFirstname:@"MingJie" lastname:@"Li" bookName:@"book1"]; Student *stu2 = [Student studentWithFirstname:@"LongHu" lastname:@"Huang" bookName:@"book2"]; Student *stu3 = [Student studentWithFirstname:@"LianJie" lastname:@"Li" bookName:@"book2"]; Student *stu4 = [Student studentWithFirstname:@"Jian" lastname:@"Xiao" bookName:@"book1"]; NSArray *array = [NSArray arrayWithObjects:stu1,stu2,stu3, stu4, nil nil]; // 1.先按照书名进行排序 // 这里的key写的是@property的名称 NSSortDescriptor *bookNameDesc = [NSSortDescriptor sortDescriptorWithKey:@"book.name" ascending:YES]; // 2.再按照姓进行排序 NSSortDescriptor *lastnameDesc = [NSSortDescriptor sortDescriptorWithKey:@"lastname" ascending:YES]; // 3.再按照名进行排序 NSSortDescriptor *firstnameDesc = [NSSortDescriptor sortDescriptorWithKey:@"firstname" ascending:YES]; // 按顺序添加排序描述器 NSArray *descs = [NSArray arrayWithObjects:bookNameDesc, lastnameDesc, firstnameDesc, nil nil]; NSArray *array2 = [array sortedArrayUsingDescriptors:descs]; NSLog(@"array2:%@", array2); }
0 0
- NSArry基本用法
- 基本结构的数组 NSArry NSMutableArray
- iOS NSString+NSMutableString+NSValue+NSArry用法汇总
- NSSet和NSArry的区别&NSSet的一般用法
- NSARRY排序
- nsarry排序
- nsarry&nsdictionary
- nsarry内存
- NSArry,NSSet,NSDictory
- NSArry 常用方法...enumerateObjectsUsingBlock:
- 基本用法
- 基本用法
- 将 Json读入 NSArry中
- NSString NSArry NSDictionary常用方法
- iOS学习笔记06--NSArry
- NSArry 中的方法 --Objective-C
- 基本常用控件基本用法
- 基本常用控件基本用法
- 【LeedCode】328. Odd Even Linked List
- iOS设备、Icon、LaunchImage、图片分辨率
- windows server 部署负载均衡
- DataTable序列化和反序列化
- 新建一个线程去运行下载数据或数据查询的操作
- NSArry基本用法
- Linux个性化命令行登陆提示文字
- 安装windows2008系统的心得
- Android 屏幕适配方案
- JAVA之 jdk 的配置
- 客户端和服务器端交互之session
- 我的网页搭建中篇01——网页背景02.使用渐变色做网页背景
- 已知先序中序序列求后序序列
- MySQL特殊函数