• 数组的使用


    将对象按某种顺序储存在数组中

    数组以有序序列储存对象。因此,一组对象的顺序很重要时,就该使用数组。例如,许多应用程序使用数组向表格视图中的行或菜单中的项目提供内容;索引为 0 的对象对应于第一行,索引为 1 的对象对应于第二行,依此类推。访问数组中对象的时间,比访问集合中对象的时间长。

    创建数组

    NSArray 类提供许多初始化程序和类工厂方法,用于创建数组和对数组进行初始化,但有几个方法尤其常见和实用。您可以使用 arrayWithObjects:count: 和 arrayWithObjects: 方法(及其对应的初始化程序 initWithObjects:count: 和 initWithObjects:),从一系列对象创建数组。使用前一种方法时,第二个参数指定第一个参数(静态 C 数组)中的对象数;使用后一种方法时,其参数为以逗号分隔的对象序列(以 nil 终止)。

    // Compose a static array of string objects
    NSString *objs[3] = {@"One", @"Two", @"Three"};
    // Create an array object with the static array
    NSArray *arrayOne = [NSArray arrayWithObjects:objs count:3];
    // Create an array with a nil-terminated list of objects
    NSArray *arrayTwo = [[NSArray alloc] initWithObjects:@"One", @"Two", @"Three", nil];

    创建可变数组时,可以使用 arrayWithCapacity:(或 initWithCapacity:)方法创建数组。容量参数将有关数组预期大小的提示提供给类,从而使数组在运行时更高效。数组甚至可以超过所指定的容量。

    您还可以使用容器字面常量 @[ ...] 创建数组,其中方括号之间的项目是以逗号分隔的对象。例如,要创建包含一个字符串、一个数字和一个日期的数组,您可以编写以下代码:

    NSArray *myArray = @[ @"Hello World", @67, [NSDate date] ];

    访问数组中的对象

    通常,您调用 objectAtIndex: 方法访问数组中的对象,方法是指定该对象在该数组中的索引位置(从 0 开始)。

    NSString *theString = [arrayTwo objectAtIndex:1]; // returns second object in array

    NSArray 提供其他方式来访问数组中的对象或其索引。例如,有 lastObjectfirstObjectCommonWithArray: 和 indexOfObjectPassingTest:

    您可以使用下标记号(而非使用 NSArray 的方法)访问数组中的对象。例如,要访问 myArray(上面已创建)中的第二个对象,您可以编写如下代码:

    id theObject = myArray[1];

    与数组有关的另一个常见任务,是对数组中的每个对象执行某种操作——这是称为枚举的过程。您通常枚举数组,来决定一个对象或多个对象是否与某个值或条件匹配;如果有一个对象匹配,则使用该对象完成一项操作。您可以采用以下三种方式之一枚举数组:快速枚举、使用块枚举或使用 NSEnumerator 对象。顾名思义,快速枚举通常比使用其他技巧访问数组中的对象要快。快速枚举是一项需要特定语法的语言功能:

    for (type variable in array)/* inspect variable, do something with it */ }

    例如:

    NSArray *myArray = // get array
    for (NSString *cityName in myArray) {
        if ([cityName isEqualToString:@"Cupertino"]) {
            NSLog(@"We're near the mothership!");
            break;
        }
    }

    数个 NSArray 方法使用块来枚举数组,其中最简单的是 enumerateObjectsUsingBlock:。此块具有三个参数:当前对象、其索引和引用的 Boolean 值(设置为 YES 时终止枚举)。此块中的代码执行的工作,与快速枚举语句中大括号内的代码完全相同。

    NSArray *myArray = // get array
    [myArray enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
        if ([obj isEqual:@"Cupertino"]) {
            NSLog(@"We're near the mothership!");
            *stop = YES;
        }
    }];

    管理可变数组 

    NSArray 具有其他方法用于給数组排序、搜索数组和在数组中的每个对象上调用方法。

    通过调用 addObject: 方法,可将对象添加到可变数组;对象放在数组末尾。您也可以使用 insertObject:atIndex:,将对象放在可变数组中的特定位置。通过调用 removeObject: 方法或 removeObjectAtIndex: 方法,可以从可变数组中移除对象。

    您还可以使用下标记号,将对象插入可变数组中的特定位置。

    NSMutableArray *myMutableArray = [NSMutableArray arrayWithCapacity:1];
    NSDate *today = [NSDate date];
    myMutableArray[0] = today;

  • 相关阅读:
    用ProFTPD构建FTP服务器
    Js数组里剔除指定的元素(不是指定的位置)
    JS跨域设置和取Cookie
    ajax test
    js下判断 iframe 是否加载完成的完美方法
    使用div模拟出frameset效果
    js中call与apply用法
    phpstorm 快捷键
    JQuery中 数组与字符串(过滤,排序,拆分,合并)
    基于 Apache 在本地配置多个虚拟主机
  • 原文地址:https://www.cnblogs.com/lelun/p/5558396.html
Copyright © 2020-2023  润新知