zoukankan      html  css  js  c++  java
  • ios 数组遍历

    http://www.cnblogs.com/love-lie/archive/2012/07/11/2585804.html
         使用数组对象创建的数组功能非常强大,在Java语言或者C语言中定义的数组必须满足数组中的每一个元素必须是同样的类型。而Objective-C语言可以在Array数组中放任意类型的数据,值得注意的是只能放指向这个对象的指针,如果直接放int ,char,double 等等,是不行的.

     
    1.不可变数组对象
     
    使用NSArray关键字创建一个不可变的数组,一旦初始化完毕后这个数组的元素是不可以在动态的添加与删除。
    创建MyClass对象,将指向这个对象的指针也可以存入NSArray数组中,可见NSArray对象数组中可以储存任意对象的数据。
     
    [arraycount] : 得到这个对象数组的长度。
    [arrayobjectAtIndex 0]: 传入数组脚标的id 得到数据对象。
    [arrayWithObjects; ...]:向数组对象初始化赋值。这里可以写任意对象的指针,结尾必须使用nil。标志结束~
     
    使用for循环遍历这个数组对象。
    1. #import<UIKit/UIKit.h>
    2. #import "MyClass.h"
    3. intmain(intargc, char*argv[])
    4. {
    5. NSAutoreleasePool *pool = [[NSAutoreleasePoolalloc] init];
    6. //添加我们的测试代码
    7. //创建自定义类
    8. MyClass *myClass = [[MyClassalloc]init];
    9. //创建一个不可变的数组
    10. NSArray *array= [NSArray arrayWithObjects:@"雨松", @"MOMO",@"哇咔咔",myClass,nil];
    11. //得到数组的长度
    12. int count = [arraycount];
    13. //遍历这个数组
    14. for(int i = 0; i< count; i++) {
    15. NSLog(@"普通的遍历:i = %d时的数组对象为: %@",i,[array objectAtIndex:i]);
    16. }
    17. intretVal = UIApplicationMain(argc, argv, nil,nil);
    18. [pool release];
    19. returnretVal;
    20. }
     


    上面的for循环遍历方法比较普遍,但是效率不好,而且安全性不高。Objective-C提供了一种快速枚举遍历方法,推荐大家都使用这种方法来遍历。
     
    for(NSObject *object in array) :遍历array这个数组,每一次循环将数组中的元素赋值给 *object,实现循环遍历。
    #import<UIKit/UIKit.h>
    1. #import "MyClass.h"
    2. intmain(intargc, char*argv[])
    3. {
    4. NSAutoreleasePool *pool = [[NSAutoreleasePoolalloc] init];
    5. //添加我们的测试代码
    6. //创建自定义类
    7. MyClass *myClass = [[MyClassalloc]init];
    8. //创建一个不可变的数组
    9. NSArray *array= [NSArray arrayWithObjects:@"雨松", @"MOMO",@"哇咔咔",myClass,nil];
    10. //遍历这个数组
    11. for(NSObject *object in array) {
    12. NSLog(@"快速的遍历数组对象为:%@",object);
    13. }
    14. int retVal =UIApplicationMain(argc, argv, nil, nil);
    15. [pool release];
    16. returnretVal;
    17. }

     
     
    2.可变数组对象
     
    [NSMutableArray arrayWithCapacity:10]:初始化可变数组对象的长度,如果后面代码继续添加数组超过长度10以后NSMutableArray的长度会自动扩充,所以不用担心数组越界。
    [array addObject:...] :向可变数组尾部添加数据对象。
    [array addObjectsFromArray:..]:向可变数组尾部添加一个数组对象。*)#>];
    1. #import<UIKit/UIKit.h>
    2. #import "MyClass.h"
    3. intmain(intargc, char*argv[])
    4. {
    5. NSAutoreleasePool *pool = [[NSAutoreleasePoolalloc] init];
    6. //添加我们的测试代码
    7. //创建自定义类
    8. MyClass *myClass = [[MyClassalloc]init];
    9. //创建一个可变的数组长度为10
    10. NSMutableArray *array = [NSMutableArrayarrayWithCapacity:10];
    11. //向数组中动态的添加对象
    12. [array addObject:@"雨松"];
    13. [array addObject:@"MOMO"];
    14. [array addObject:@"小可爱"];
    15. [array addObject:@"哇咔咔"];
    16. [array addObject:myClass];
    17. for(NSObject * object in array)
    18. {
    19. NSLog(@"输出对象数组:%@", object);
    20. }
    21. intretVal = UIApplicationMain(argc, argv, nil,nil);
    22. [pool release];
    23. returnretVal;
    24. }
     

     
    [array insertObject:@"插入一只小老虎" atIndex:1]:向可变数组中插入一个字符串对象,并且设定它的位置脚标索引为 1。

    [array insertObject:(NSArray *)atIndex:(NSIndexSet *)] :向可变数组中插入一个数组对象,可以任意设置它的位置脚标索引。

    1. #import<UIKit/UIKit.h>
    2. #import "MyClass.h"
    3. intmain(intargc, char*argv[])
    4. {
    5. NSAutoreleasePool *pool = [[NSAutoreleasePoolalloc] init];
    6. //添加我们的测试代码
    7. //创建自定义类
    8. MyClass *myClass = [[MyClassalloc]init];
    9. //创建一个可变的数组长度为10
    10. NSMutableArray *array = [NSMutableArrayarrayWithCapacity:10];
    11. //向数组中动态的添加对象
    12. [array addObject:@"雨松"];
    13. [array addObject:@"MOMO"];
    14. [array addObject:@"小可爱"];
    15. [array addObject:@"哇咔咔"];
    16. [array addObject:myClass];
    17. //向数组中插入
    18. [array insertObject:@"插入一只小老虎" atIndex:1];
    19. for (NSObject * objectin array)
    20. {
    21. NSLog(@"输出对象数组:%@",object);
    22. }
    23. int retVal =UIApplicationMain(argc, argv, nil, nil);
    24. [pool release];
    25. returnretVal;
    26. }
     

     
    NSRange range = NSMakeRange(0,5); 设置一个范围为 0 到 5之间。
    [array removeObject:myClass inRange:range] :设置在一个范围内删除数据,如果这个范围内没有删除的这个对象则不会删除任何东西。例子中因为myClass对象在 数组 0 到5的范围内,所以myClass就被删除掉了。
     
    [array removeObject:(id)]:无需考虑范围,主要数组中存在这个对象就会直接被删除。
    [arrayremoveObjectAtIndex:(NSUInteger)]:删除数组中指定脚标索引的数据。
     
    [array removeObjectIdenticalTo:(id)] :删除数组中指定元素
    [array removeObjectIdenticalTo:(id)inRange:(NSRange)] : 在指定范围内删除指定的元素。
     
    [array removeObjectsInArray:(NSArray *)]:删除一个数组的元素。
    1. #import<UIKit/UIKit.h>
    2. #import "MyClass.h"
    3. intmain(intargc, char*argv[])
    4. {
    5. NSAutoreleasePool *pool = [[NSAutoreleasePoolalloc] init];
    6. //添加我们的测试代码
    7. //创建自定义类
    8. MyClass *myClass = [[MyClassalloc]init];
    9. //创建一个可变的数组长度为10
    10. NSMutableArray *array = [NSMutableArrayarrayWithCapacity:10];
    11. //向数组中动态的添加对象
    12. [array addObject:@"雨松"];
    13. [array addObject:@"MOMO"];
    14. [array addObject:@"小可爱"];
    15. [array addObject:@"哇咔咔"];
    16. [array addObject:myClass];
    17. //设置一个删除范围
    18. NSRange range=NSMakeRange(0,5);
    19. //删除元素
    20. [array removeObject:myClassinRange:range];
    21. for(NSObject * object in array)
    22. {
    23. NSLog(@"输出对象数组:%@", object);
    24. }
    25. intretVal = UIApplicationMain(argc, argv, nil,nil);
    26. [pool release];
    27. returnretVal;
    28. }
     

     
    [array replaceObjectAtIndex 2withObject:@"已经修改了"]:替换数组脚标为2的数据。
    1. #import<UIKit/UIKit.h>
    2. #import "MyClass.h"
    3. intmain(intargc, char*argv[])
    4. {
    5. NSAutoreleasePool *pool = [[NSAutoreleasePoolalloc] init];
    6. //添加我们的测试代码
    7. //创建自定义类
    8. MyClass *myClass = [[MyClassalloc]init];
    9. //创建一个可变的数组长度为10
    10. NSMutableArray *array = [NSMutableArrayarrayWithCapacity:10];
    11. //向数组中动态的添加对象
    12. [array addObject:@"雨松"];
    13. [array addObject:@"MOMO"];
    14. [array addObject:@"小可爱"];
    15. [array addObject:@"哇咔咔"];
    16. [array addObject:myClass];
    17. //修改脚标索引为2的元素
    18. [array replaceObjectAtIndex: 2 withObject:@"已经修改了"];
    19. for(NSObject * object in array)
    20. {
    21. NSLog(@"输出对象数组:%@", object);
    22. }
    23. intretVal = UIApplicationMain(argc, argv, nil,nil);
    24. [pool release];
    25. returnretVal;
    26. }

  • 相关阅读:
    webstorm和git安装后,terminal输入git命令,提示'git' 不是内部或外部命令
    Vue中beforeRouterEnter和beforeRouteLeave的应用
    对象数组,对比多个数组的相同子元素并筛选
    应用canvas绘制动态时钟--每秒自动动态更新时间
    opacity 与rgba区别
    js对象的合并
    小程序wx.navigateTo和wx.redirectTo 都无效
    点赞博客园
    英语学习方法
    JAVA编程思想——分析阅读
  • 原文地址:https://www.cnblogs.com/zhangsongbai/p/3102609.html
Copyright © 2011-2022 走看看