OC05 for_in快速遍历技术
来源:互联网 发布:nfc读卡软件 编辑:程序博客网 时间:2024/05/20 09:08
// Person.h
#import <Foundation/Foundation.h>
@interface Person :NSObject
{
NSString *_name;
int _age;
}
- (instancetype)initWithName: (NSString *)name
age: (int)age;
-(NSString *)name;
-(int)age;
// 声明
- (NSComparisonResult)compareWithNameDown:(Person *)person;
@end
// Person.m
#import "Person.h"
@implementation Person
- (instancetype)initWithName: (NSString *)name
age: (int)age{
if ([superinit]) {
_name = name;
_age = age;
}
return self;
}
-(NSString *)name{
return_name;
}
-(int)age{
return_age;
}
// 伪程序欺骗系统,实现
- (NSComparisonResult)compareWithNameDown:(Person *)person{
if ( [_namecompare:[personname]] == -1 ) {
returnNSOrderedDescending;
}elseif ([_namecompare:[person name]] ==1){
returnNSOrderedAscending;
}else
returnNSOrderedSame;
}
@end
// main.m
#import <Foundation/Foundation.h>
#import "Person.h"
int main(int argc,const char * argv[]) {
#pragma mark -快速遍历
/*
1、数组、字典、集合都可以使用for循环,根据元素个数获取到所有的对象。
2、Coaoa框架提供了一种快速遍历的方式:for...in...,不需要知道元素个数,照样可以获取到全部元素
*/
/*
#pragma mark --使用for...in...快速遍历数组
// 创建一个数组
NSArray *array = [NSArray arrayWithObjects:@"1",@"2",@"3",@"4",@"4",@5,@5.12, nil];
for (id obj in array) {
NSLog(@"%@", obj);
}
#pragma mark --使用for...in...快速遍历字典
NSDictionary *dic = [NSDictionary dictionaryWithObjectsAndKeys:@"apple",@"fruit",@"man",@"person",@"meiHua",@"flowers", nil];
// 使用for...in...遍历字典,取出的是key值,我们还需要根据key获得value
for (id obj1 in dic) {
NSLog(@"%@", [dic objectForKey: obj1]);
}
#pragma mark --使用for...in...快速遍历集合
NSSet *set = [NSSet setWithObjects:@"1",@"2",@"3",@"4",@"9", nil];
for (id obj2 in set) {
NSLog(@"%@", obj2);
}
*/
#pragma mark --不能使用for...in...添加、删除元素
NSMutableArray *mArray = [NSMutableArrayarrayWithObjects:@"1",@"2", @"3",@"4", nil];
//在for循环中我们可以动态添加、删除元素
for (int i =0; i < [mArray count]; i++) {
[mArrayremoveLastObject];
NSLog(@"%@", mArray);
}
//在快速遍历过程中,不能修改元素(特别是元素的个数)
// for (id obj3 in mArray) {
// [mArray removeLastObject]; // 错误的用法
// }
#pragma mark -数组排序
#pragma mark --使用冒泡法,给OC数组排序
NSArray *ocArray = [NSArrayarrayWithObjects:@1,@2,@3,@4,nil];
NSMutableArray *mocArray = [NSMutableArrayarrayWithArray:ocArray]; // 将不可变数组转换成可变数组
for (int i =0; i < [mocArray count]; i++) {
for (int j =0; j < [mocArray count] - i -1; j++) {
if ([[mocArray objectAtIndex:j]intValue] > [[mocArray objectAtIndex:j+1] intValue]) {//
//使用字符串的交换元素位置方法,来交换元素。
[mocArray exchangeObjectAtIndex:jwithObjectAtIndex:j+1];
}
}
}
NSLog(@"%@",mocArray);
#pragma mark --使用Selector方法选择器给OC数组排序
//sortUsingSelector: sortedArrayUsingSelector:
NSArray *ocArray1 = [NSArrayarrayWithObjects:@"d",@"e",@"a",@"z",nil];
NSMutableArray *mArray1 = [NSMutableArrayarrayWithArray:ocArray1];
// SEL :这种类型的参数,表示参数是一个方法名,需要用@selector()来选择指定的方法作为参数
// SEL :是OC中的一种方法选择器,他可以用来绑定方法名。得到的是方法的唯一标示符
// sortUsingSelector:是可变数组的排序方法,在原数组基础上进行排序 (默认升序)
// [mArray1 sortUsingSelector:@selector(compare:)];
// NSLog(@"%@",mArray1);
// sortedArrayUsingSelector:可变数组和不可变数组都可以使用,该方法不在原数组的基础上修改,而是将排好序的数组元素作为一个新的数组返回 (默认升序)
// person.m实现降序方法可参照!!!
NSArray *sorted = [mArray1 sortedArrayUsingSelector:@selector(compare:)];//compare:
NSLog(@"%@",sorted);
// 综合练习题
Person *person1 = [[Personalloc] initWithName:@"aaa"age:23];
Person *person2 = [[Personalloc] initWithName:@"ddd"age:12];
Person *person3 = [[Personalloc] initWithName:@"cc"age:1];
Person *person4 = [[Personalloc] initWithName:@"eee"age:12];
NSMutableArray *mutabArray = [NSMutableArrayarrayWithObjects:person1, person2, person3, person4,nil];
//按照姓名降序排列
[mutabArraysortUsingSelector:@selector(compareWithNameDown:)];
for (id objin mutabArray) {
NSLog(@"%@", [objname]);
}
return 0;
}
- OC05 for_in快速遍历技术
- OC05 -- 数组
- OC05 集合
- OC05 字典/数组
- 快速枚举 快速遍历
- OC05核心语法总结 2
- iOS OC05.2_数组
- 快速遍历数组
- JAVA Map 快速遍历
- 字典快速遍历
- 快速遍历 for...in...
- 文件夹遍历技术
- 遍历技巧 NSEnumerator 和快速遍历
- 快速目录和文件遍历
- 6、快速遍历、数组排序
- mysqlbinlog快速遍历搜索记录
- Objective-c快速遍历小计
- 如何快速学好技术
- Caused by: java.lang.UnsupportedOperationException
- OC05 字典/数组
- Android APP开发流程
- OC05 集合
- Android Volley 网络请求框架图
- OC05 for_in快速遍历技术
- SVN用命令注册Window服务
- 桥接模式与适配器模式辨析
- KMP模板
- OC06 Block
- 12 个非常实用的 jQuery 代码片段
- select下拉联动 (Bootstrap、JQuery插件之cxselect)
- 最新阿里云推荐码,阿里云9折优惠码分享 : 2GHQXP
- C#学习笔记 常用的集合