一、OC三大基本数据结构之NSArray
基类:NSArray
不可变数组,数组一旦创建,数组的元素个数和顺序不可变。
子类:NSMutableArray
可变数组,继承了基类的方法,又有自己的关于修改元素个数和顺序的方法。
二、NSArray的使用
1.创建数组
NSArray * array1 = [[NSArray alloc] initWithObjects:@"one",@"two",@"three", nil];
NSLog(@"%s输出:%@","%@",array1);
2.遍历数组的三种方法
枚举器法(正序枚举器和倒序枚举器)、快速枚举法、使用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
Dog.m
#import "Dog.h"
@implementation Dog
-(NSString *)description{
return @"This is a dog";
}
@end
Main.m
#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);
@诗未冷学习博客