黑马程序员———Objctive-C———【NSArray不可变数组、NSMutableArray可变数组】

来源:互联网 发布:隐藏软件的桌面 编辑:程序博客网 时间:2024/06/08 00:29

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

——————————————————————————————————————————————————————————————————

NSArray的常用方法
- (NSUInteger)count; 获取集合元素个数
- (id)objectAtIndex:(NSUInteger)index; 获得index位置的元素
- (BOOL)containsObject:(id)anObject; 判断是否包含元素
- (NSUInteger)indexOfObject:(NSString *)string; 获取元素的位置

快速创建Array数组
Array array=@[@"1",@"2",@"3",@4];
用简化的方式访问数组元素
array[3]; //NSString str=array[3]; str=4

NSArray的遍历方法
(1)下标遍历
方法:普通的for循环方法
(2)快速遍历
方法:
NSArray array=@[@"one",@"two",@"three"];
for(NSString * str in array){
NSLog(@"%@ ",str);
}
(3)使用block遍历
方法:
参数id obj:当前对象
参数NSUInteger idx:当前对象的位置
参数BOOL *stop:是否停止
arr enumerateObjectsUsingBlock:^(id obj,NSUInteger idx,BOOL *stop){
if(idx==2){
*stop=YES; //只打印前两个元素,当位置为2时,break
}else{
NSLog(@"idx=%ld,obj=%@",idx,obj);
}
}

NSArray读写文件
写入数据和读取数据
NSArray *array=[NSArray arrayWithObjects:@"one",@"two",@"three",@"foure",nil];
//把NSArray中的内容,写入到文件arr.plist中
BOOL isWrite=[array writeToFile:@"/Users/zhaoxiaohu/Desktop/arr.plist" atomically:YES];
if(isWrite){
NSLog("写入成功");
}

//读取
NSArray *readArray=[NSArray arrayWithContentsOfFile:@"/Users/zhaoxiaohu/Desktop/arr.plist"];
NSLog(@"%@",readArray);

NSArray与字符串
(1)把数组元素链接成字符串
components:组成、构成
separator:分离器
- (NSString *)componentsJoinedByString:(NSString *)separator;
这是NSArray的方法,用separator作拼接符将数组元素拼接成一个字符串

(2)-(1)把一个字符串分割成数组
NSString *str2=@"400-800-1258";
NSArray *arr2=[str2 componentsSeparatedByString:@"-"];
NSLog(@"%@",[arr2 firstObject]);
NSLog(@"%@",[arr2 lastObject]);
NSLog(@"%@",arr2[1]);

(2)-(2)
str2=@"400-800-12580#400-888-11200";
NSArray *arr3=[str2 componentsSeparatedByString:@"#"];
NSLog(@"arr3=%@",arr3); //400-800-12580 400-888-11200
//第一个电话的每一部分
NSArray *arr4=[[arr3 firstObject] componentsSeparatedByString:@"-"];
NSLog(@"arr4=%@",arr4); //400 800 12580

NSMutableArray介绍、使用
(1)空数组
NSMutableArray *arr=[NSMutableArray array];

(2)创建数组的时候,初始化一个元素
NSMutableArray *arr2=[NSMutableArray arrayWithObject:@"one"];

(3)创建数组的时候,初始化多个元素
NSMutableArray *arr3=[NSMutableArray arrayWithObjects:@"one",@"two",@3,nil];

(4)创建一个数组,并且指定长度
NSMutableArray *arr4=[NSMutableArray arrayWithCapacity:(NSUInteger)];
Capacity:容量

(5)增加元素
- (void)addObject:(id)object;

(5)-(1)在指定的位置插入元素
- (void)addObject:(id)object atIndex:(NSUInteger)idx;

(6)删除元素
根据对象内容删除
removeObject:(id)object;

根据对象下标删除
removeObjectAtIndex:(NSUInteger)idx;

删除最后一个元素
- (void)removeLastObject;

删除所有元素
- (void)removeAllObjects;

删除range范围内的所有元素
- (void)removeObjectsInRange:(NSRange)range;

(7)修改元素
快捷方法
arr[0]=@"one";

用anObject替换index位置对应的元素
- (void)replaceObjectAtIndex:(NSUInteger)index withObject:(id)anObject;

(8)查找元素
- (BOOL)containsObject:(id)object;

(9)交换元素(该方法很重要)
- (void)exchangeObjectAtIndex:(NSUInteger) withObjectAtIndex:(NSUInteger);

(10)NSMutable使用注意事项
使用该种方式创建的数组永远是不可变的
NSMutableArray *array=@[@"ONE",@"TWO"...];
[array addObject:@"Peter"];

NSDictionary介绍、使用
NSDictionary的创建、初始化
(1)创建空字典(无意义,因为NSDictionary不可变,一旦创建,内容不能修改)
NSDictionary *dict1=[NSDictionary dictionary];

(2)创建只有一组键值对的地段
NSDictionary *dict2=[NSDictionary dictionaryWithObject:(id) forKey:(id< NSCopying>)];
eg:NSDictionary *dict2=[NSDictionary dictionaryWithObject:@"张三" forKey:@"zs"];

(3)创建多组键值对的字典
NSDictionary *dict3=[NSDictionary dictionaryWithObjectsAndKeys:(id),nil];
eg:NSDictionary *dict3=[NSDictionary dictionaryWithObjectsAndKeys:@"value1",@"k1",@"value2",@"k2",nil];
注意1:key值和value值都必须是对象类型
注意2:如果key值重复,不会报错,只能保存先定义的键值对

(4)快速创建字典
格式:@{key值:value值...};
eg:NSDictionary *dict4=@{@"zs":@"zhangsan",@"ls":@"lisi"};

获取键值对数目、根据key获取value
- (NSUInteger)count; //获取不重复的键值对的数目
- (id)objectForKey:(id)aKey;

遍历
(1)使用forin
第1步:获取所有的key
第2步:根据key获取value
for(NSString *key in dict4){
    NSLog(@"key=%@,value=%@",key,[dict4 objectForKey:key]);
}

(2)使用block
[dict4 enumerateKeysAndObjectsUsingBlock:^(id key,id obj,BOOL *stop){
    NSLog(@"%@=%@",id,obj);
}];

0 0
原创粉丝点击