/**
* 二.数组:存储多个对象
* NextStep=NS
*
*数组中元素也可以是数组
*/
//创建字面量数组
NSArray *arr=@[@"abc",@"def"]; //一维数组 用(xxx,xxx,xxxx....)表示
NSArray *arr1=@[arr,@"nhk"]; //二维数组 用( (xxx,xxxx....)xxxx,xxx)
NSLog(@"arr=%@",arr);
NSLog(@"arr1=%@",arr1);
//1.访问数组元素的方法
//(1.)
//objectAtIndex:根据索引取出数组的元素
NSString *str21=[arr objectAtIndex:0];
NSLog(@"str21=%@",str21);
//(2.)试用arr[i]
NSString *str22=arr[1];
NSLog(@"str22=%@",str22);
//(3.)多维数组使用多个[][]
NSString *str23=arr1[0][0];
NSLog(@"str23=%@",str23);
//2.使用构造器,便利初始化方法创建对象
NSArray *arr3=[[NSArray alloc]initWithObjects:@"123",@"456",@"789", nil];
NSLog(@"%@",arr3);
//使用便利构造器
NSArray *arr4=[NSArray arrayWithObjects:@"123",@"456",@"789", nil];
NSLog(@"%@",arr4);
//3.可变数组
NSMutableArray *marr=[NSMutableArray array];
//追加元素 addObject
[marr addObject:@"12"];
[marr addObject:@"34"];
[marr addObject:@"56"];
//删除(removeObjectAtIndex)某个索引对应的元素,删除某个元素之后后面的元素惠自动往前移
[marr removeObjectAtIndex:1];
NSLog(@"%@",marr);
NSMutableArray *marr3=[NSMutableArray arrayWithArray:marr];
NSLog(@"%@",marr3);
//更多方法,请参加文档:CMD +单击
//4.字符串分割
// @"name=yang&sex=m&tel=1770&color=yellow"
//遇到componentsSeparatedByString:就分割
NSString *url =@"name=yang&sex=m&tel=1770&color=yellow";
NSArray *components =[url componentsSeparatedByString:@"&"];
NSLog(@"components=%@",components);
//遍历数组
// 方法1.利用数组的count个数 (依人)
for (int i=0; i<components.count; i++)
{
//取出数组的每一个组件,例如:name=yang
NSString *com=components[i];
NSArray *newArr =[com componentsSeparatedByString:@"="];
NSString *key=newArr[0];
NSString *value =newArr[1];
NSLog(@"%@:%@",key,value);
}
//方法2.快速枚举 重点1
//缺点,没有数组的索引
//从数组中每次取一个放入到str变量中
for (NSString *str in components)
{ //此代码会执行数组个次数
NSLog(@"%@",str);
}
//方法3.块枚举 (待续)
[components enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
NSLog(@"索引%lu",idx);
NSLog(@"数组元素是%%@",obj);
if (-1) {
*stop =YES;
}
}];
//方法4.枚举器 (了解)
//创建枚举器:
NSEnumerator *enumtor=[components objectEnumerator];
id objj;
//nextObject方法每次可以获取数组的一个元素
while (objj=[enumtor nextObject]) {
NSLog(@"%@",objj);
}