首页 > 代码库 > NSArray,NSDictionary,NSSet总结
NSArray,NSDictionary,NSSet总结
-学习笔记,以备以后查询
------干货分割线-------------------
-NSArray
1、初始化、取值等基础操作
-NSArray 是不可变数组,一旦创建完成就不能够对数组进行,添加,删除等操作
NSArray * array = [[NSArray alloc] init];
NSArray * array1 = [NSArray arrayWithObjects:@"one",@"two",@"three", nil];
-在创建一个NSArray的时候最后一个元素一定是nil 不要把nil存到数组中,会导致数据丢失
-数组实际上存储的时对象的地址,同样也可以存储数组的地址
NSArray * a1 = [[NSArray alloc] initWithObjects:@"one",@"two",@"three", nil];
NSArray * a2 = [[NSArray alloc] initWithObjects:@"1",@"2",@"3", nil];
NSArray * a3 = [[NSArray alloc] initWithObjects:a1,a2, nil];
-创建数组的快捷方式
NSArray * array = @[@"a",@"b",@"c"];
-快速获得一个数组中的元素
NSString * str = array[0];
[array objectAtIndex:0]; 数组的index从0开始
[array count] 获得元素个数
[array containsObject:p1] 判断数组中是否包含某个对象
2、遍历数组
a、普通的for循环
for (int i = 0; i < array.count; i++)
{
NSString * str = array[i];
NSLog(@"array[%d] = %@",i,str);
}
b、使用增强for循环的方式遍历数组
for (NSString * str in array)
{
NSLog(@"str = %@",str);
}
c、枚举器
NSArray * array = @[@"one",@"two",@"three"];
NSEnumerator * enumerator = [array objectEnumerator];
NSString * value;
while (value = http://www.mamicode.com/[enumerator nextObject]) {
NSLog(@"enum str %@",value);
}
3、数组排序
a、使用sortedArrayUsingSelector
[array sortedArrayUsingSelector:@selector(compare:)]
b、使用block方式排序
array2 = [array2 sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2) {
/*
NSComparisonResult result = [obj1 compare:obj2];
return result;
*/
//obj1 compare obj2 就是正序排序
//return [obj1 compare:obj2];
//obj2 compare obj1 就是倒序排序
return [obj2 compare:obj1];
}];
-如果你向给你自己定义的对象排序,必须根据某一个属性来排序,
-如果你向给你自己定义的对象排序,必须根据某一个属性来排序,
-sortDescriptorWithKey 参数要的就是你对象中,要依据哪个属性来排序,你就把哪个 属性的名字当成key传入
-ascending YES表示正序 NO表示倒叙
NSSortDescriptor * d1 = [NSSortDescriptor sortDescriptorWithKey:@"age" ascending:NO];
NSSortDescriptor * d2 = [NSSortDescriptor sortDescriptorWithKey:@"year" ascending:NO];
-如果你要使用多个属性进行排序,默认在前面的NSSortDescriptor优先级比较高
NSArray * description = @[d2,d1];
array3 = [array3 sortedArrayUsingDescriptors:description];
4、可变数组NSMutableArray
创建可变数组
NSMutableArray * array = [[NSMutableArray alloc] initWithCapacity:0];
-使用addObject 动态给数组中增加元素
[array addObject:@“one"];
-数组中可以存储,同一个对象多次
-指定对象插入的位置
[array insertObject:str1 atIndex:2];
-删除 会通过对象,删除数组中所有的同一个地址的对象
[array removeObject:str1];
-通过索引的方式删除对象,超出了数组的count值,那么就会导致异常 index beyond bounds
[array removeObjectAtIndex:0];
[array removeAllObjects];
-NSDictionary
1、初始化
-创建字段,不可变的
NSDictionary * dic = [NSDictionary dictionaryWithObjectsAndKeys:@"s",@"name", nil];
-快捷创建方式
NSDictionary * dic2 = @{ @"one":@"1",@"two":@"2"};
dic2.count 获得字典长度
2、遍历
NSArray * keys = [dic3 allKeys];
for (int i = 0; i < keys.count; i++)
{
NSString * key = [keys objectAtIndex:i];
//如果你的字典中存储的多种不同的类型,那么最好用id类型去接受它
id obj = [dic3 objectForKey:key];
NSLog(@"obj %@",obj);
}
—枚举器
NSEnumerator * enumerator = [dic3 objectEnumerator];
id value;
while (value = http://www.mamicode.com/[enumerator nextObject]) {
NSLog(@"value %@",value);
}
3、可变字典NSMutableDictionary
-创建一个可变长度字典
NSMutableDictionary * muDic = [[NSMutableDictionary alloc] initWithCapacity:0];
-向字典中村如数据
[muDic setObject:@"1" forKey:@"one"];
-删除
[muDic removeObjectForKey:@“one"];
-全部删除
[muDic removeAllObjects];
-NSSet
1、NSSet初始化
-NSSet是无序的
-注意:这个是最为重要的功能 NSSet中不能够存储重复的数据,可以用它来去除重复的值
NSString * str1 = @"one";
NSString * str2 = @"two";
NSString * str3 = @"three";
NSSet * set = [[NSSet alloc] initWithObjects:str1,str2,str3,str1, nil];
这样其实在set中指存储了 @“one”,@“two”,@“three” set.count 值为3
[set containsObject:str1]; 是否包含str1
2、遍历
NSEnumerator * enumerator = [set objectEnumerator];
NSString * value;
while (value = http://www.mamicode.com/[enumerator nextObject]) {
NSLog(@"value %@",value);
}
3、可变集合NSMutableSet
-创建一个可变集合
NSMutableSet * muSet = [[NSMutableSet alloc] init];
-增加值
[muSet addObject:str1];
-删除
[muSet removeObject:str1];
-删除所有
[muSet removeAllObjects];
-集合之间相互转换
1.NSArray 转换成 NSMutableArray
NSArray * array = @[@"one",@"two",@"three"];
NSMutableArray * muArray = [NSMutableArray arrayWithArray:array];
2.NSDictionary 转换成 NSMutableDictionary
NSDictionary * dic = @{@"one":@"1",@"two":@"2"};
NSMutableDictionary * muDic = [NSMutableDictionary dictionaryWithDictionary:dic];
3.NSSet 转换成 NSMutableSet
NSSet * set = [[NSSet alloc] initWithObjects:@"one",@"two", nil];
NSMutableSet *muSet = [NSMutableSet setWithSet:set];
4.NSArray 转换成NSSet
NSMutableSet * muSet2 = [NSMutableSet setWithArray:array];
5.NSDictionary 转化成NSArray
NSArray * keys = [dic allKeys];
NSArray * values = [dic allValues];
6.字符串转换成数组
NSString * str = @"aa.bb.cc";
NSArray * strArray =[str componentsSeparatedByString:@“."];
NSArray,NSDictionary,NSSet总结