数组的循环
1、简单的for循环
NSArray *array01 = [[NSArray alloc] initWithObjects:@“woman”, @"man", nil];
NSInteger countItem = array01.count;
for (int i = 0; i < countItem; i++)
{
NSObject *object = [array01 objectAtIndex:i];
NSLog(@"object %@", object);
}
2、快速遍历-最快的方法
for (NSObject *object in array01)
{
NSLog(@"object %@", object);
}
3、逐个遍历
3-1、正序遍历
[array01 enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
NSLog(@"顺序遍历array:%zi-->%@", idx, obj);
}];
3-2、倒序遍历(NSEnumerationReverse)
[array01 enumerateObjectsWithOptions:NSEnumerationReverse usingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
NSLog(@"倒序遍历array:%zi-->%@",idx,obj);
}];
4、枚举
NSEnumerator *objectEnumerator = [array01 objectEnumerator];
id obj;
while (obj = [objectEnumerator nextObject])
{
NSLog(@"枚举array:%@", obj);
}
数组与字符串的转换
注意:相互转换时,数组中包含的所有元素必须是字符串对象
NSArray *array05 = [NSArray arrayWithObjects:@“zhangshaoyu”, @"meizhou", @"worker", @"man", nil];
NSLog(@"array05 %@", array05);
NSString *stringArray = [array05 componentsJoinedByString:@" +*-*#+ "];
NSLog(@"stringArray %@", stringArray);
// 字符串分离成数组时,必须以字符串中包含的相同的字符作为分割符号
NSArray *array06 = [stringArray componentsSeparatedByString:@" +*-*#+ "];
NSLog(@"array06 %@", array06);
数组比较
1、两个数组比较:比较两个数组是否相等,即数组的元素个数相等,数组的元素个个都相等
NSArray *array02 = [[NSArray alloc] initWithObjects:@“woman”, @"man", @"man", nil];
BOOL isEqual = [array01 isEqualToArray:array02];
if (isEqual)
{
NSLog(@"%@ 等于 %@", array01, array02);
}
else
{
NSLog(@"%@ 不等于 %@", array01, array02);
}
NSArray *array03 = [[NSArray alloc] initWithArray:array01];
isEqual = [array01 isEqualToArray:array03];
if (isEqual)
{
NSLog(@"%@ 等于 %@", array01, array03);
}
else
{
NSLog(@"%@ 不等于 %@", array01, array03);
}
2、单个数组-数组排序:比较元素的大小(数组中的元素类型必须一致,才能进行比较大小)
2-1、NSComparator
NSArray *array07 = @[[NSNumber numberWithInt:10], [NSNumber numberWithInt:3], [NSNumber numberWithInt:5], [NSNumber numberWithInt:7], [NSNumber numberWithInt:8], [NSNumber numberWithInt:9], [NSNumber numberWithInt:19]];
NSArray *sortedArray = [array07 sortedArrayUsingComparator:^(NSNumber *number1, NSNumber *number2) {
int value1 = [number1 intValue];
int value2 = [number2 intValue];
// 降序,即从大到小
// if (value1 > value2)
// {
// return NSOrderedAscending;
// }
// else
// {
// return NSOrderedDescending;
// }
// 升序,即从小到大
if (value1 > value2)
{
return NSOrderedDescending;
}
else
{
return NSOrderedAscending;
}
}];
NSLog(@"2-1 %@", sortedArray);
2-2、NSComparator
NSComparator comparator = ^(id obj1, id obj2){
int value1 = [obj1 intValue];
int value2 = [obj2 intValue];
// 升序,即从小到大
// if (value1 > value2)
// {
// return (NSComparisonResult)NSOrderedDescending;
// }
// else if (value1 < value2)
// {
// return (NSComparisonResult)NSOrderedAscending;
// }
// else
// {
// return (NSComparisonResult)NSOrderedSame;
// }
// 降序,即从大小到
if (value1 > value2)
{
return (NSComparisonResult)NSOrderedAscending;
}
else if (value1 < value2)
{
return (NSComparisonResult)NSOrderedDescending;
}
else
{
return (NSComparisonResult)NSOrderedSame;
}
};
sortedArray = [array07 sortedArrayUsingComparator:comparator];
NSLog(@"2-2 %@", sortedArray);
2-3、NSSortDescriptor(ascending=YES为升序,即从小到大,ascending=NO为降序,即从大小到)
NSSortDescriptor *descriptor = [[NSSortDescriptor alloc] initWithKey:nil ascending:NO];
NSArray *sortArray = [NSArray arrayWithObjects:descriptor, nil];
sortedArray = [array07 sortedArrayUsingDescriptors:sortArray];
NSLog(@"2-3 %@", sortedArray);
数组的倒序
// 原始数组
NSArray *array = @[@"1", @"2", @"3"];
// 倒序的数组
array = [[array reverseObjectEnumerator] allObjects];