码迷,mamicode.com
首页 > 编程语言 > 详细

数组的使用

时间:2016-06-04 12:02:59      阅读:189      评论:0      收藏:0      [点我收藏+]

标签:

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

数组以有序序列储存对象。因此,一组对象的顺序很重要时,就该使用数组。例如,许多应用程序使用数组向表格视图中的行或菜单中的项目提供内容;索引为 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;

数组的使用

标签:

原文地址:http://www.cnblogs.com/lelun/p/5558396.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!