NSArray是不可变数组,数组中的元素必须是同一种类型。
| 常用的NSArray方法 | |
| 方法 | 描述 |
| +(instancetype) arrayWithObjects: obj1,obj2,...nil | 创建一个新数组,obj1,obj2,...是其元素 |
| -(BOOL) containsObject: obj | 确定数组中是否包含对象obj(使用isEqual:方法) |
| -(NSUInteger) count | 数组中元素的个数 |
| -(NSUInteger) indexOfObject: obj | 第一个包含对象obj的元素索引号(使用isEqual:方法) |
| -(NSUInteger) indexOfObjectPassingTest: (BOOL(^)(id obj, NSUInteger idx, BOOL *stop)) block | 传递每个对象obj(带有索引号idx)到区块block中,如果obj通过测试返回YES,未通过返回NO,设置变量指针stop为YES结束处理 |
| -(id) lastObject | 返回数组最后的对象 |
| -(id) objectAtIndex: i | 存储在元素i的对象 |
| -(void) makeObjectsPerform Selector: (SEL) selector | 将selector指示的消息发送给数组中的每个元素 |
| -(void) enumerateObjectsUsingBlock: (void(^)(id obj, NSUInteger idx, BOOL *stop)) block | 通过块获取数组中的每个元素,包括对象obj和对应的索引号idx,只有当所有的元素都遍历完成或设置变量指针stop为YES才处理结束 |
| -(NSArray *) sortedArrayUsingSelector: (SEL) selector | 根据指定selector方法的比较器对数组进行排序 |
| -(NSArray *) sortedArrayUsingComparator: (NSComparator) block |
通过执行区块block对数组进行排序 |
| -(BOOL) writeToFile: path atomically:(BOOL) flag | 将数组写入指定的文件中,如果flag为YES,则先创建一个临时文件 |
示例一:
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[]) {
@autoreleasepool {
int i;
// 创建一个数组饱含月份的名称,最后一个元素必须以nil结尾
NSArray *monthNames = [NSArray arrayWithObjects:
@"January", @"February", @"March",
@"April", @"May", @"june", @"July",
@"August", @"September", @"October",
@"November", @"December", nil];
// 列出数组中所有的元素
NSLog(@"Month Name");
NSLog(@"===== =====");
for (i = 0; i < 12; ++i)
NSLog(@" %2i %@", i + 1, [monthNames objectAtIndex: i]);
}
return 0;
}
示例二:重写示例一
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[]) {
@autoreleasepool {
int i;
// 创建一个数组饱含月份的名称
NSArray *monthNames = @[@"January", @"February", @"March",
@"April", @"May", @"june", @"July",
@"August", @"September", @"October",
@"November", @"December"];
// 列出数组中所有的元素
NSLog(@"Month Name");
NSLog(@"===== =====");
for (i = 0; i < 12; ++i)
NSLog(@" %2i %@", i + 1, monthNames[i]);
}
return 0;
}