参考:
孙富有(iOS工程师)
重点:
//数组转变为字符串 字符串转变为数组
NSMutableString * nsstring=[[NSMutableString alloc]initWithFormat:@"21-54-54-845-52-3"];
//把不可变的数组转变为可变数组
NSMutableArray * nsm=[NSMutableArray arrayWithArray:[nsstring
componentsSeparatedByString:@"-"]]; //标识
NSLog(@"%@",nsm);
[nsm replaceObjectAtIndex:4 withObject:@"1"];
NSString *ns=[nsm componentsJoinedByString:@","];
NSLog(@"%@",ns);
一、可变数组
#pragma mark 创建数组c
NSMutableArray * array =[[NSMutableArray alloc] initWithObjects:@"a",@"b",@"c" ,nil];
NSMutableArray * array1 =[NSMutableArray arrayWithObjects:@"a",@"b",@"c" , nil];
NSArray * array2 = @[@"1",@"2",@"3"];
NSMutableArray * array3 = [[NSMutableArray alloc]initWithArray:array2];
NSLog(@"%@",array3);
#pragma mark 可变数组增加元素
[array addObject:@"d"];
[array addObject:@"e"];
NSLog(@"%@",array);
#pragma mark 可变数组在指定范围内增加
//数组当前范围
[array insertObject:@"f" atIndex:0];
NSLog(@"%@",array);
#pragma mark 在数组中追加数组
NSArray * array4 = @[@"g",@"h",@"i"];
[array addObjectsFromArray:array4];
NSLog(@"%@",array);
#pragma mark 替换数组中的元素
[array1 replaceObjectAtIndex:2 withObject:@"hhh"];
NSLog(@"%@",array1);
#pragma mark 交换数组中元素的位置
[array exchangeObjectAtIndex:0 withObjectAtIndex:5];
NSLog(@"%@",array);
#pragma mark 在数组中删除
//1.删除最后一个元素
[array removeLastObject];
NSLog(@"%@",array);
//2.删除指定下标的元素
[array removeObjectAtIndex:5];
NSLog(@"%@",array);
//3.直接删除元素
[array removeObject:@"e"];
NSLog(@"%@",array);
//4.在指定范围内去删除元素
//在此范围内,如果存在这个元素,则删除
//如果不存在,不做处理
//0 位置
//5 长度
NSRange range = {0,5};
[array removeObject:@"g" inRange:range];
NSLog(@"%@",array);
//从一个数组删除
NSArray * arr =@[@"a",@"b",@"c",@"d"];
[array removeObjectsInArray:arr];
NSLog(@"%@",array);
//6 删除数组中所有元素,但是数组仍存在,但是没有元素.
[array removeAllObjects];
NSLog(@"array = %@",array);
#pragma mark 修改数组
[array setArray:arr];
NSLog(@"%@",array);
二、不可变数组
#pragma mark 创建数组
//1.通过对象方法创建数组
NSArray * array = [[NSArray alloc]initWithObjects:@"One",@"Two",@"Three",@"Four",@"Five", nil];
// NSLog(@"%@",array);
//nil表示空,本质是0,如果是基础数据类型指针用NULL表,对象指向为空一般用nil表示 类对象为空用Nil;
// Class-->类类型
// SEL --> 选择器
//通过类方法创建数组
NSArray * array1 = [NSArray arrayWithObjects:@"1",@"2",@"3",@"4",@"5", nil];
//从Xcode4.6以后数允许用下述方法创建对象
//NSNumber @()快捷转换基本数组类型到NSNumber对象
//有些公司不允许使用,为保持一致推荐使用对象方法或类方法创建的数组
Dog * dog = [[Dog alloc]init];
NSArray * array3 = @[@"One",@"Two",@"Three",@"Four",@"Five",dog];
//id-->完成指针-->接收任何数据类型的对象
//数组本身是一个对象
//数组的元素如@"One",@"Two",@"Three",@"Four",@"Five"等都是任意类型对象,不仅限于字符串
//创建数组对象时传参,传入的是对象的地址
//数组中只能存储兑现搞得地址,而非存储对象的本体
//同一个对象可以存放发两个数组中,仍然是同一个对象.
//在一个数组中修改了对象,在另一个数组中读取对象,会发现也被修改了
//数组可以存数组
//其实%@可以打印任何对象,只要对对象重写description放来
NSLog(@"%@",array3);
#pragma mark 数组成员的个数
NSUInteger num = [array count];
NSLog(@"%lu",num);
#pragma mark 数组的成员
//0~n-1
//错误信息: index 5 beyond bounds [0 .. 4]'数组越界
NSString * str = [array objectAtIndex:3];
NSLog(@"%@",str);
//Xcode4.6 取数组成员
NSLog(@"%@",array[2]);
#pragma mark 获取数组某元素在数组中的位置
NSUInteger index = [array1 indexOfObject:@"1"];
NSLog(@"%lu",index);
#pragma mark 判断数组是否包含某个元素
BOOL tag = [array containsObject:@"Five"];
NSLog(@"%d",tag);
#pragma mark 获取第一个元素/最后一个元素
NSString * str2 =[array1 firstObject];
NSString * str3 = [array1 lastObject];
NSLog(@"%@ %@",str2 , str3);
#pragma mark 将数组的元素进行拼接
// 只对字符串对象操作
NSString * str4 = [array componentsJoinedByString:@" "];
NSLog(@"%@",str4);
#pragma mark 将字符串进行拆分
NSString * str5 = @"YES,I am a so bad man";
//拆分字符串
NSArray * array4 = [str5 componentsSeparatedByString:@" "];
NSLog(@"%@",array4);
//拆分字符串,生成一堆新的子串,原字符串不变,该方法创建一个数组,将每个子串添加到当前数组中.
// NSCharacterSet * set = [NSCharacterSet characterSetWithCharactersInString:@", "];
NSArray * array5 = [str5 componentsSeparatedByCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@", "]];
//set是集合
//[NSCharacterSet characterSetWithCharactersInString:@", "]这个方法创建一个集合的对象,返回对象地址,字符集合中的字符,来自字符串的@", "
NSLog(@"%@",array5);
#pragma mark 数组元素的混杂
Dog * dog1 = [[Dog alloc]init];
Cat * cat1 = [[Cat alloc]init];
Dog * dog2 = [[Dog alloc]init];
Cat * cat2 = [[Cat alloc]init];
Dog * dog3 = [[Dog alloc]init];
NSArray * array6 = @[dog1,cat1,dog2,dog3,cat2];
//判断对象属于某个类
//-(BOOL)isKindOfClass:(Class)class;
for (id obj in array6) {
if([obj isKindOfClass:[Dog class]]){
NSLog(@"B 哥");
}
if([obj isKindOfClass:[Cat class]]){
NSLog(@"小 龙");
}
}