for..in遍历,枚举器
#pragma mark ------------for循环遍历集合中的元素------
//创建一个数组,包含5个字符串对象,倒序取出数组中的所有元素,并存储到另一可变数组中
NSArray *array = @[@"1", @"2", @"3", @"4", @"5"];
NSMutableArray *marray = [NSMutableArray arrayWithCapacity:0];
for (NSInteger i = [array count] - 1; i >= 0 ; i --) {
[marray addObject:array[i]];
}
NSLog(@"marray is %@", marray);
NSDictionary *dic = @{@"name":@"zhonger",@"sex":@"m", @"age":@"29"};
NSArray *key = [dic allKeys];
NSArray *value = [dic allValues];
for (int i = 0; i < [key count]; i ++) {
//NSLog(@"%@ = %@",key[i], value[i]);
//NSLog(@"%@", [dic objectForKey:key[i]]);
NSLog(@"%@",dic[key[i]]);
//数组访问元素或者对象的方法是? objectAtIndex:
//数组访问元素的语法糖? 数组对象[下标]
//字典访问value值的方法是? object ForKey:
//字典访问值的语法糖? 字典对象[key]
}
//创建一个集体,保存三条信息,遍历得到每一条信息
NSSet *set = [NSSet setWithObjects:@"1", @"888888", @"3", nil];
NSArray *allSet = [set allObjects];
for (int i = 0; i < [allSet count]; i ++) {
NSLog(@"allSet is %@",allSet[i]);
}
#pragma mark ------------枚举器 NSEnumerator------
NSArray *enumArray = @[@"jinkangda", @"zhubada", @"dazi", @"bada"];
//创建一个枚举器,依附于数组
NSEnumerator *rator = [enumArray objectEnumerator]; //正序
//创建一个对象
id object = nil; //容量为空
while (object = [rator nextObject]) {
NSLog(@"正序==%@",object);
}
NSEnumerator *rator1 = [enumArray reverseObjectEnumerator];
id object1 = nil;
while (object1 = [rator1 nextObject]) {
NSLog(@"倒序==%@",object1);
}
//字典枚举遍历
NSDictionary *enumDic =
@{@"key1":@{@"key1":@"value1"},
@"key2":@{@"key2":@"value2"},
@"key3":@{@"key3":@"value3"}};
NSEnumerator *dicRator = [enumDic objectEnumerator];
id value1 = nil;
while (value1 = [dicRator nextObject]) {
NSLog(@"value1 is %@",value1);
}
#pragma mark ------------for...in..快速枚举------
//type *object 代表从集合中获取的对象类型 object只是一个名称而已,只需要满足变量命名法则就行
//collection 代表遍历的集合,要在哪个集合中遍历
//statements 遍历中需要执行的操作,比如使用枚举出来的对象实现某些功能
/*
for (<#type *object#> in <#collection#>) {
<#statements#>
}*/
for (id object in enumArray) {
NSLog(@"-----%@",object);
}
//使用forin遍历获取字典中的每个value
//在字典中遍历key,通过得到每一个key值得到每一个value
for (id key in enumDic) {
//NSLog(@"%@",[enumDic objectForKey:key]);
NSLog(@"%@",enumDic[key]);
for (id key1 in enumDic[key]) {
NSLog(@"%@",enumDic[key][key1]);
// NSLog(@"%@",[[enumDic objectForKey:key]objectForKey:key1]);
}
}
//定义⼀一个数组, 包含5个字符串对象, 取出数组中所有字 符串, 并拼接⽣生成⼀一个新的字符串。
NSArray *ar = @[@"I", @"L", @"o", @"v", @"eyou"];
NSMutableString *mstr = [[NSMutableString alloc]initWithCapacity:0];
for (id object in ar) {
//[mstr stringByAppendingString:object];
[mstr appendString:object];
}
NSLog(@"%@",mstr);
for..in遍历,枚举器的更多相关文章
- C# 枚举器(enumerator)
总结: 1.枚举器就像是序列中的"游标"或"书签".可以有多个"书签",移动其中任何一个都可以枚举集合,与其他枚举器互不影响.用来遍历数据结 ...
- JAVA中的数据结构——集合类(序):枚举器、拷贝、集合类的排序
枚举器与数据操作 1)枚举器为我们提供了访问集合的方法,而且解决了访问对象的“数据类型不确定”的难题.这是面向对象“多态”思想的应用.其实是通过抽象不同集合对象的共同代码,将相同的功能代码封装到了枚举 ...
- C#中的枚举器(转)
术语表 Iterator:枚举器(迭代器) 如果你正在创建一个表现和行为都类似于集合的类,允许类的用户使用foreach语句对集合中的成员进行枚举将会是很方便的.这在C# 2.0中比 C# 1.1更容 ...
- c# foreach枚举器
要是自己的类支持foreach ,必须在类中必须有GetEnumerator方法,该方法返回的是一个IEnumerator类型的枚举器; public class MyStruct { public ...
- C#图解教程 第十八章 枚举器和迭代器
枚举器和迭代器 枚举器和可枚举类型 foreach语句 IEnumerator接口 使用IEnumerable和IEnumerator的示例 泛型枚举接口迭代器 迭代器块使用迭代器来创建枚举器使用迭代 ...
- C# 枚举器
1:枚举器和可枚举类型 我们知道使用foreach可以遍历数组中的元素.那么为什么数组可以被foreach语句处理呢,下面我们就进行讨论一下这个问题. 2:使用foreach语句 我们知道当我们使用f ...
- C# 枚举器和迭代器
一.枚举器(enumerator)和可枚举类型(enumeration) 我们都知道foreach语句可以用来遍历数组中的元素,但你有没有想过为什么它可以被foreach处理呢? 这是因为数组可以按需 ...
- 关于IEnumerator<T>泛型枚举器 和 IEnumerable<T>
在开发中我们经常会用到 IEnumerable<T> xxx 或者 List<T> xxx 这种集合或者集合接口,实际上就是一个线性表嘛然后结合C#提供的语法糖 foreach ...
- C#知识点-枚举器和迭代器
一.几个基本概念的理解 问题一:为什么数组可以使用foreach输出各元素 答:数组是可枚举类型,它实现了一个枚举器(enumerator)对象:枚举器知道各元素的次序并跟踪它们的位置,然后返回请求的 ...
随机推荐
- 10天学会phpWeChat——第一天:核心框架的目录结构
phpWeCaht是一款优秀的PC网站+微信公共号开发框架. 本博客系列将图文结合,详细介绍phpWeChat 的使用方法,今天进入phpWeChat系列教程之<10天学会phpWeChat&g ...
- golang开发环境(2016.9.16)
一.windows下安装 1.下载go1.7.3.windows-amd64.msi,建议默认安装到‘C:\Go\’ 2.环境变量 变量 值 说明 Path C:\Go\bin 安装程序默认会设置,如 ...
- sql server 条件 not in (null)总是false
SELECT 1 WHERE 2 NOT IN ( 1 ); 结果: (无列名) 1 SELECT 1 WHERE 2 NOT IN ( 1, NULL ); 结果:(无列名) ...
- 在CentOS中将/var等已有目录挂载到新添加的硬盘
1.查看当前硬盘使用状况: [root@gluster_node1 ~]# df -h Filesystem Size Used Avail Use% Mounted on / ...
- 基于服务(Web Service)的文件管理Winform程序实现
1. 描述 面向服务的体系结构(SOA)是一个组件模型,它将应用程序的不同功能单元(称为服务)通过这些服务之间定义良好的接口和契约联系起来.接口是采用中立的方式进行定义的,它应该独立于实现 ...
- Quartz 线程处理
官网 http://www.quartz-scheduler.net/ 相关的 Log 说明 http://netcommon.sourceforge.net/docs/2.1.0/reference ...
- JNI相关知识
JNI(Java Native Interface,JAVA原生接口) 使用JNI可以使Java代码和其他语言写的代码(如C/C++代码)进行交互. 问:为什么要进行交互? |- 首先,Java语言 ...
- [转载]http协议 文件下载原理及多线程断点续传
最近研究了一下关于文件下载的相关内容,觉得还是写些东西记下来比较好.起初只是想研究研究,但后来发现写个可重用性比较高的模块还是很有必要的,我想这也是大多数开发人员的习惯吧.对于HTTP协议,向服务器请 ...
- How to pronounce symbols on keyboard
Refefrence: http://answers.yahoo.com/question/index?qid=20100607151104AAtQxhc ~ “tilde” or “tweedle” ...
- 【cocos2d-js官方文档】一、搭建 Cocos2d-JS 开发环境
http://blog.csdn.net/qinning199/article/details/40395085