您的位置:首页 > 其它

NSArray常用方法

2016-02-15 23:16 316 查看
#pragma mark 创建数组
void arrayCreate() {
// 创建一个空数组
NSArray *array = [NSArray array];

// 创建有一个元素的数组
array = [NSArray arrayWithObject:@"123"];

// 创建有多个元素的数组
array = [NSArray arrayWithObjects:@"a", @"b", @"c", nil];

// 获取数组元素的个数
NSUInteger count = [array count];

NSLog(@"%zi", count);
}

#pragma mark 数组的简单使用
void arrayUse() {
NSArray *array = [NSArray arrayWithObjects:@"a", @"b", @"c", nil];

// 判断数组是否包含了某个元素
if ([array containsObject:@"a"]) {
NSLog(@"包含了字符串a");
} else {
NSLog(@"没有包含字符串a");
}

// 获取数组的最后一个元素
NSString *last = [array lastObject];
NSLog(@"%@", last);

// 根据数组的下标取值
NSString *indexValue = [array objectAtIndex:0];
NSLog(@"%@", indexValue);

// 查找元素在数组里的位置
NSUInteger index = [array indexOfObject:@"a"];
NSLog(@"%zi", index);

// 让数组里面的所有对象都调用test方法
[array makeObjectsPerformSelector:@selector(test)];
}

#pragma mark 遍历数组1(普通遍历)
void arrayFor1() {
NSArray *array = [NSArray arrayWithObjects:@"a", @"b", @"c", nil];

NSUInteger count = array.count;
for (int i = 0; i < count; i++) {
id obj = [array objectAtIndex:i];
NSLog(@"%i - %@", i, obj);
}
}

#pragma mark 遍历数组2(快速遍历)
void arrayFor2() {
NSArray *array = [NSArray arrayWithObjects:@"a", @"b", @"c", nil];
int i = 0;
// 快速遍历
for (id obj in array) {
NSLog(@"%i - %@", i, obj);
i++;
}
}

#pragma mark 遍历数组3(block遍历,官方推荐)
void arrayFor3() {
NSArray *array = [NSArray arrayWithObjects:@"a", @"b", @"c", nil];

[array enumerateObjectsUsingBlock:^(id  _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
NSLog(@"%zi - %@", idx, obj);

if (idx == 1) {
*stop = YES; // 能让遍历停止
}
}];
}

#pragma mark 遍历数组4(迭代器遍历)
void arrayFor4() {
NSArray *array = [NSArray arrayWithObjects:@"a", @"b", @"c", nil];

// 获取数组的迭代器
//    NSEnumerator *enumerator = [array objectEnumerator];
// 反序迭代器
NSEnumerator *enumerator = [array reverseObjectEnumerator];

// 获取迭代器里面没有被遍历的的所有值
NSArray *array2 = [enumerator allObjects];
NSLog(@"%@", array2);

id obj = nil;
// 获取下一个需要遍历的元素
while (obj = [enumerator nextObject]) {
NSLog(@"%@", obj);
}
}

#pragma mark 派生出新的数组
void arrayNew() {
NSArray *array = [NSArray arrayWithObjects:@"a", @"b", @"c", nil];

// 添加一个元素到数组
NSArray *array2 = [array arrayByAddingObject:@"d"];
NSLog(@"%@", array2);

// 组合两个数组成新的数组
NSArray *array3 = [array arrayByAddingObjectsFromArray:[NSArray arrayWithObjects:@"d", @"e", nil]];
NSLog(@"%@", array3);

// 截取数组某一部分
NSRange range = NSMakeRange(0, 2);
NSArray *array4 = [array subarrayWithRange:range];
NSLog(@"%@", array4);
}

#pragma mark 数组的其他用法
void arrayOther() {
NSArray *array = [NSArray arrayWithObjects:@"a", @"b", @"c", nil];

// 用一个字符串拆分数组成字符串
NSString *str =
4000
[array componentsJoinedByString:@","];
NSLog(@"%@", str);

// 把数组写到文件里去
NSString *path = @"/Users/admin/Desktop/array.xml";
if ([array writeToFile:path atomically:YES]) {
NSLog(@"写入文件成功");
} else {
NSLog(@"写入文件失败");
}

// 从文件中读取数组内容(文件有严格的格式要求)
NSArray *array2 = [NSArray arrayWithContentsOfFile:@"/Users/admin/Desktop/array.xml"];
NSLog(@"%@", array2);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  nsarray