------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ------
OC 加强第四天-NSArray及NSDictionary总结:
1)特点:一旦创建成功,内容不可改变;而且只能存放OC对象;
2)NSarray直接使用NSlog( )作为字符串输出的时候是小括号扩起来的形式;
3)NSarray中不能存储nil,因为NSarray 认为nil是数组的结束(nil是数组元素结束的标记)。nil就是0,0就是基本数据类型,不能存放到NSarray中。
4)只能存放任意的OC对象,并且是有顺序的,不能存放非OC对象,如基本数据类型。
5)创建数组的五种方法:
1)创建一个空数组
<span style="font-size:18px;">NSArray *arr1 = [NSArray array];</span>
2)创建数组,只有一个元素
<span style="font-size:18px;">NSArray *arr2 = [NSArray arrayWithObject:@"1"];</span>
3)创建数组,有多个元素
nil 表示数组赋值结束,常见写法:<span style="font-size:18px;"><span style="font-size:18px;">NSArray *arr3 = [NSArray arrayWithObjects:@"one",@"two",@1, nil];
NSLog(@"arr3 = %@",arr3);</span></span>
4)调用对象方法,创建数组
<span style="font-size:18px;">NSArray *arr4 = [[NSArray alloc] initWithObjects:@"three",[NSNull null],@"four", nil];
NSLog(@"arr4 = %@",arr4);</span>
5)用一个数组可以创建另外一个数组
<span style="font-size:18px;">NSLog(@"arr5 = %@“,arr5);</span>
2.NSarray的常见用法:
1)获取数组的长度 count获取数组的元素的个数<span style="font-size:18px;">NSLog(@"%ld",arr3.count);</span>
2)根据下标,获取下标对应的对象
<span style="font-size:18px;">NSLog(@"%@",[arr3 objectAtIndex:3]);</span>
3)返回元素的下标<span style="font-size:18px;">NSUInteger loc = [arr3 indexOfObject:@"three"];
NSLog(@"%ld",loc);</span>
4)数组中是否包含了某个元素<span style="font-size:18px;">[arr3 containsObject:@“four”] // 此时可以作为判断条件使用;</span>
5)简化方式定义数组:<span style="font-size:18px;">NSArray *arr = @[@“1",@"one",@"3",@4,@"ONE"];</span>
6)用简化方式访问数组元素的值: str = arr[1];3.array的三种方法遍历:
<span style="font-size:18px;"><span style="font-size:18px;">NSArray *arr = @[@"one",@"two",@"three",@"four"];</span></span>
1) 普通的方式,通过下标访问
<span style="font-size:18px;"> for (int i=0; i<arr.count; i++) {
NSLog(@"-> %@",arr[i]);
}</span>
2) 快速枚举法 for循环的增强形式
<span style="font-size:18px;">for (NSString * str in arr) {
NSLog(@"---> %@",str);
}</span>
3) 使用block的方式,进行访问<span style="font-size:18px;">[arr enumerateObjectsUsingBlock:^(id obj(数组元素), NSUInteger idx(元素下标), BOOL *stop)];
{
if(idx == 2){
*stop = YES; //停止 // break;
}else{
NSLog(@"idx = %ld,obj = %@“,idx,obj);}</span>
4.NSarray读写文件:
1)写文件格式:
<span style="font-size:18px;"><span style="font-size:18px;">BOOL isWrite = [array writeToFile:@"/Users/zhaoxiaohu/Desktop/arr.xml" atomically:YES];
if(isWrite){
NSLog(@"写入成功");
}</span></span>
2)读文件格式:从文件中,读取一个数组信息<span style="font-size:18px;"><span style="font-size:18px;">NSArray *readArr = [NSArray arrayWithContentsOfFile:@"/Users/zhaoxiaohu/Desktop/arr.xml"];
NSLog(@"readArr = %@",readArr);</span></span>
3)这种方式可以读写.plist 文件/.XML文件.5.NSarray与字符串;
1)把数组分割成一个字符串:格式为:
NSArray *arr = @[@1,@2,@3,@4];
NSString *str = [arr componentsJoinedByString:@“-"];
2)把字符串拆分成一个数组方法:
NSString *str2 = @"400-800-12580";
NSArray *arr2 = [str2 componentsSeparatedByString:@“-"];
6.NSmutableArrayde 基本使用:
1)创建数组的四种方法:
i. 空数组
NSMutableArray *arr1 = [NSMutableArray array];
NSLog(@"%p",arr1);
ii.创建的时候初始化一个元素
NSMutableArray *arr2 = [NSMutableArray arrayWithObject:@"one"];
iii.创建数组的时候,初始化多个元素
NSMutableArray *arr3 = [NSMutableArray arrayWithObjects:@"one",@"two",@3,nil];
IV . 创建一个数组,并且指定长度,
NSMutableArray *arr4 = [NSMutableArray arrayWithCapacity:5];
2) 添加元素
[arr1 addObject:@"fengjie"];
NSLog(@"%p",arr1);
//插入元素到指定的位置
[arr1 insertObject:@"zbz" atIndex:0];
3) 删除元素
//根据对象内容删除
[arr1 removeObject:@"zbz"];
//根据位置删除
// [arr1 removeObjectAtIndex:1];
//全部删除
[arr1 removeAllObjects];
4) 修改元素
//two --> four
[arr3 replaceObjectAtIndex:1 withObject:@"four"];
//four --> five
//更加简单地方法
arr3[1] = @"five";
NSLog(@"%@",arr3);
5) 查找元素
BOOL isSearch = [arr3 containsObject:@"four"];
NSLog(@"%d",isSearch);
6) 交换元素
NSMutableArray *arr5 =[NSMutableArray arrayWithObjects:@1,@2,@3,@4,@5, nil];
// 可以交换数组元素
[arr5 exchangeObjectAtIndex:0 withObjectAtIndex:4];
NSLog(@“%@",arr5);
7.NSDictionary介绍:
NSDictionary 不可变的,一旦创建,内容就不能添加\删除(不能改动)1)创建空字典
NSDictionary *dict1 = [NSDictionary dictionary];
// key value
// zs ---> 张三
// ls ---> 李四
// mz ---> 码子
2)创建只有一组键值对的字典
NSDictionary *dict2 = [NSDictionary dictionaryWithObject:@"zhangsan" forKey:@"zs"];
3)创建多组键值对的字典
// value值,key值
NSDictionary *dict3 = [NSDictionary dictionaryWithObjectsAndKeys:@"value1",@"k1",@"value2",@"k2", nil];
//注意;
// 字典的key值和value值,都必须是对象
4)快速创建一个字典
//@{,,key值:value值,,,};
//key值不能重复:
//如果重复了,也不会报错
//如果重复了,最后添加的将不能够保存到字典中
NSDictionary *dict4 = @{@"zs":@"zhaosi",@"zs":@"zhangsan",@"ls":@"lisi",@"bz":@"banzhang"};
NSLog(@"%@",dict4); //以%@格式打印字典,控制台输出一个{}
5)获取字典的长度
NSLog(@"%lu",dict4.count);
// zs zhaosi
// key
NSString *str = [dict4 objectForKey:@"zs"];
NSLog(@"str = %@",str);
7)字典的遍历问题
//第一步:获取所有的key
//第二步:根据key获取value
// for(NSString *key in dict4){
// NSLog(@"key = %@,value = %@",key,[dict4 objectForKey:key]);
// }
// key value stop
[dict4 enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) {
NSLog(@"%@ --> %@",key,obj);
}];