NSArray,NSDictionary,NSSet用法及区别
来源:互联网 发布:工口mmd动作数据 编辑:程序博客网 时间:2024/06/03 17:45
NSString * str1 =@"one";
NSString * str2 =@"two";
NSString * str3 =@"three";
-NSArray
1、初始化、取值等基础操作
NSArray 是不可变数组,一旦创建完成就不能够对数组进行,添加,删除等操作
NSArray * array1 = [NSArrayarrayWithObjects:str1,str2,str3,str1,nil];
在创建一个NSArray的时候最后一个元素一定是nil 不要把nil存到数组中,会导致数据丢失创建数组的快捷方式
NSArray * array = @[@"a",@"b",@"c"];
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 = [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 = [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 * set1 = [[NSSetalloc] initWithObjects:str1,str2,str3,str1,nil];
这样其实在set中指存储了 @“one”,@“two”,@“three” set.count 值为3 【看最下面实例】2、遍历
NSEnumerator * enumerator = [set objectEnumerator];
NSString * value;
while (value = [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:@“."];
实例:
NSString * str1 = @"one";
NSString * str2 =@"two";
NSString * str3 =@"three";
//数组 不可变
NSArray * array1 = [NSArrayarrayWithObjects:str1,str2,str3,str1,nil];
NSLog(@"数组 不可变 array1 count: %ld",[array1count]);
NSLog(@"数组 不可变内容: %@",array1);
//集合 不可变
NSSet * set1 = [[NSSetalloc] initWithObjects:str1,str2,str3,str1,nil];
NSLog(@"集合 不可变 array1 count: %ld",[set1count]);
NSLog(@"集合 不可变内容: %@",set1);
//数组 可变
NSMutableArray * array2 = [NSMutableArraynew];
[array2 addObject:str1];
[array2 addObject:str2];
[array2 addObject:str3];
[array2 addObject:str1];
NSLog(@"数组 可变 array1 count: %ld",[array2count]);
NSLog(@"数组 可变内容: %@",array2);
//集合 可变
NSMutableSet * set2 = [[NSMutableSetalloc] init];
[set2 addObject:str1];
[set2 addObject:str2];
[set2 addObject:str3];
[set2 addObject:str1];
NSLog(@"集合 可变 array1 count: %ld",[set2count]);
NSLog(@"集合 可变内容: %@",set2);
//数组转集合
NSMutableSet * set3 = [NSMutableSetsetWithArray:array1];
NSLog(@"数组转集合 内容: %@",set3);
输出日志:
2017-10-10 17:22:02.651060+0800 setAndArray[1558:84219] 数组 不可变 array1 count: 4
2017-10-10 17:22:02.651173+0800 setAndArray[1558:84219] 数组 不可变内容: (
one,
two,
three,
one
)
2017-10-10 17:22:02.651213+0800 setAndArray[1558:84219] 集合 不可变 array1 count: 3
2017-10-10 17:22:02.651269+0800 setAndArray[1558:84219] 集合 不可变内容: {(
one,
three,
two
)}
2017-10-10 17:22:02.651289+0800 setAndArray[1558:84219] 数组 可变 array1 count: 4
2017-10-10 17:22:02.651325+0800 setAndArray[1558:84219] 数组 可变内容: (
one,
two,
three,
one
)
2017-10-10 17:22:02.651345+0800 setAndArray[1558:84219] 集合 可变 array1 count: 3
2017-10-10 17:22:02.651372+0800 setAndArray[1558:84219] 集合 可变内容: {(
one,
two,
three
)}
//装换成集合后 自动去除重复值的对象
2017-10-10 17:08:23.366852+0800 setAndArray[1415:73533] 数组转集合 内容: {(
one,
three,
two
)}
- NSArray,NSDictionary,NSSet用法及区别
- NSArray、 NSSet、 NSDictionary 区别:
- 用法总结:NSArray,NSSet,NSDictionary
- 用法总结:NSArray,NSSet,NSDictionary
- 用法总结:NSArray,NSSet,NSDictionary
- 用法总结:NSArray,NSSet,NSDictionary
- 用法总结:NSArray,NSSet,NSDictionary
- 用法总结:NSArray,NSSet,NSDictionary
- 用法总结:NSArray,NSSet,NSDictionary
- 用法总结:NSArray,NSSet,NSDictionary
- 用法总结:NSArray,NSSet,NSDictionary
- 用法总结:NSArray,NSSet,NSDictionary
- 用法总结:NSArray,NSSet,NSDictionary
- 用法总结:NSArray,NSSet,NSDictionary
- 用法总结:NSArray,NSSet,NSDictionary
- ios学习--用法总结:NSArray,NSSet,NSDictionary
- IOS NSArray NSSet NSDictionary 三种类用法
- NSArray、NSSet、NSDictionary区别-OC+class
- linux 安装 php5.6 集成 nginx
- startup_stm32f40xx.s: error: A3906U: Malformed via file '.\debug\startup_stm32f40xx._ia'.
- 初学springcloud微服务框架(—)
- Python学习(一)
- springboot项目解决外部tomcat通过ip+端口访问项目
- NSArray,NSDictionary,NSSet用法及区别
- 网络爬虫,python和数据分析学习--part1
- hive的查询注意事项以及优化总结 .
- 使用 docker-machine 管理 Azure 容器虚拟机
- Android开发艺术探索学习笔记4——View的工作原理
- linux基础命令(六)文件权限
- CPU与GPU协同工作
- spoj highways 【生成树定理】
- Linux驱动编程——双通道LVDS屏幕配置