一、OC三大基本数据结构之NSArray
基类:NSArray
不可变数组,数组一旦创建,数组的元素个数和顺序不可变。
子类:NSMutableArray
可变数组,继承了基类的方法,又有自己的关于修改元素个数和顺序的方法。
二、NSArray的使用
1.创建数组
NSArray * array1 = [[NSArray alloc] initWithObjects:@"one",@"two",@"three", nil]; NSLog(@"%s输出:%@","%@",array1);
枚举器法(正序枚举器和倒序枚举器)、快速枚举法、使用i值
//遍历数组,枚举器法Enumerator NSEnumerator * enu = [array1 objectEnumerator]; NSString * str; while(str = [enu nextObject]){ NSLog( @"枚举器法:%@", str); } //倒序枚举器法 NSEnumerator * enu2 = [array1 reverseObjectEnumerator]; while (str = [enu2 nextObject]){ NSLog(@"倒序枚举器法:%@",str); } //遍历数组,快速枚举法 id obj in array for(id obj2 in array1){ NSLog(@"快速枚举法:%@",obj2); } //遍历数组,使用i值 id obj1; int i; for(i = 0 ; i < [array1 count]; i++){ obj1 = [array1 objectAtIndex:i]; NSLog(@"使用i值遍历:%@", obj1); }
3.%@的理解
使用%@输出,实际上是输出description方法的返回值,desctiption方法是Object类的方法。
我们可以重写该方法,类验证自己的想法。
Dog.h
#import <Foundation/Foundation.h> @interface Dog : NSObject -(NSString *)description; @end
#import "Dog.h" @implementation Dog -(NSString *)description{ return @"This is a dog"; } @end
#import <Foundation/Foundation.h> #import "Dog.h" int main(int argc, const char * argv[]) { @autoreleasepool { Dog * dog = [Dog alloc]; NSLog(@"使用%s输出Dog类的对象:%@","%@",dog); } return 0; }
//1.创建,形式1 NSMutableArray * mutableArray = [[NSMutableArray alloc] initWithObjects:@"one",@"two", nil]; [mutableArray addObject:@"three"]; NSLog(@"创建可变数组:%@",mutableArray); //1.创建,形式2 NSMutableArray * mutableArray2 =[[NSMutableArray alloc] init]; [mutableArray2 addObject:@"ONE"]; [mutableArray2 addObject:@"TWO"]; [mutableArray2 addObject:@"THREE"]; NSLog(@"创建可变数组2%@", mutableArray2); //2.删除元素 //[mutableArray removeAllObjects]; //[mutableArray removeLastObject]; //[mutableArray removeObjectAtIndex:0]; //[mutableArray removeObjectsInRange:NSMakeRange(0, 2)]; //3.改变元素的顺序--交换元素的位置 [mutableArray exchangeObjectAtIndex:0 withObjectAtIndex:2]; //NSLog(@"%@", mutableArray); //4.字符串分割成数组 NSString * string = @"I am a very happy boy"; NSArray * array3 = [string componentsSeparatedByString:@" "]; NSLog(@"字符串分割数组:%@", array3); //将分割的数组倒序 NSMutableArray * mutableArray3 = [[NSMutableArray alloc] init]; NSEnumerator * enu3 = [array3 reverseObjectEnumerator];//对哪个数组进行枚举,使用哪个数组创建枚举器 id obj4; while(obj4 = [enu3 nextObject]){ [mutableArray3 addObject:obj4]; } NSLog(@"字符串分割数组并倒序:%@",mutableArray3); //5.数组拼接成字符串 NSString * newStirng =[array3 componentsJoinedByString:@"-"]; NSLog(@"%@", newStirng);