zoukankan      html  css  js  c++  java
  • NSEnumerator用法小结

    NSEnumerator

     

    3)枚举 (NSEnumerator)
    遍历数组每个索引处的对象,你可以编写一个0到[array count]的循环,而NSEnumerator用来描述这种集合迭代运算的方式。
    通过objectEnumerator向数组请求枚举器,如果想从后向前浏览集合,可使用reverseObjectEnumerator方法。在获得枚举器后,可以开始一个while循环,每次循环都向这个枚举器请求它的下一个对象:nextObject。nextObject返回nil值时,循环结束。示例如下:

    
    
    1 // NSEnumerator示例
    2 NSEnumerator *enumerator;
    3 enumerator = [array objectEnumerator];
    4 id thing;
    5 while (thing = [enumerator nextObject]) {
    6 NSLog(@"I found %@",thing);
    7 }

     

     

     

    对于可变数组进行枚举操作时,主要不要添加或删除数组中的对象。


    4)快速枚举
    Objective-C2.0支持快速枚举:如

    
    
    1 for (NSString *string in array)
    2 {
    3 NSLog(@" I found %@",string);
    4 }

    6

     

    这个循环将会遍历数组中的每个元素,并且用变量string存储每个数组值。它比枚举器语法更加简洁快捷。

     

     

     

     

     

     

    NSEnumerator用法小结

     NSLog(@"Hello, World!");
    NSDictionary *myDic=[[NSDictionary alloc]initWithObjectsAndKeys:@"张三",@"name",@"李四",@"name", nil];

    NSUInteger count = [myDic count];
    NSLog(@"词典的数量为: %lu",count);

    NSEnumerator * myEnumerator = [myDic keyEnumerator];


    for (NSObject *object in myEnumerator) {
    NSLog(@"遍历KEY的值: %@",object);
    }

    myEnumerator = [[myDic allValues] objectEnumerator];
    NSString *value;
    while((value = [myEnumerator nextObject]))
    {
    NSLog(@"遍历的值: %@",value);
    }

    //通过KEY找到value
    NSObject *myObject = [myDic objectForKey:@"name"];

    if (myObject != nil) {
    NSLog(@"通过KEY找到的value是: %@",myObject);
    }

    NSMutableDictionary *mydic2 = [NSMutableDictionary dictionaryWithCapacity:10];
    [mydic2 setObject:@"Alex Hu" forKey:@"name"];
    [mydic2 setObject:@"1388888888" forKey:@"mobile number"];

    for (NSObject *object in [mydic2 objectEnumerator]) {
    NSLog(@"遍历的值: %@",object);
    }

    NSSet *mySet=[NSSet setWithObjects:@"A",@"B",@"C",@"D",[NSNumber numberWithInteger:123], nil];
    count=[mySet count];
    NSLog(@"count= %lu",count);

    myEnumerator=[mySet objectEnumerator];
    for (NSObject *object in myEnumerator) {
    NSLog(@"myEnumerator value=%@",object);
    if ([object isEqualTo:@"A"]) {
    NSLog(@"找到A了");
    }
    if ([object isEqual:@"B"]) {
    NSLog(@"找到B");
    }
    }

    NSArray *mySetArr=[mySet allObjects];
    for (NSUInteger i=0; i<[mySetArr count];i++) {
    NSLog(@"%lu =>%@",i,[mySetArr objectAtIndex:i]);
    }

    if ([mySet containsObject:@"D"]) {
    NSLog(@"集合中包含 D这个对象");
    }
    复制代码
    NSFileManager *fm=[NSFileManager defaultManager];
    for(NSString *fileName in [fm enumeratorAtPath:documentsDirectory])
    {
    if([[fileName pathExtension]isEqualToString:@"jpg"])

    {


    }

    }
    复制代码


     

  • 相关阅读:
    MiniGUI
    Android-在XML和Java代码中设置背景在不同状态的效果: <selector>/StateListDrawable
    URLEncoder.encode、URLDecoder.decode、escape、encodeURI、encodeURIComponent
    getDimension,getDimensionPixelOffset和getDimensionPixelSize的一点说明
    Android获取屏幕分辨率及DisplayMetrics简介
    细说Android事件传递机制(dispatchTouchEvent、onInterceptTouchEvent、onTouchEvent)
    Android
    Android坐标
    Android Sqlite IN, NOT IN syntax --- not int (?)
    TextView with SingleLine as true and Gravity as Center not passing the events to the ViewPager if it has a Click Event
  • 原文地址:https://www.cnblogs.com/iOS-mt/p/4109023.html
Copyright © 2011-2022 走看看