字典类
字典简介
- 字典⽤于保存具有映射关系(key-value对)数据的集合
- 对于“name:张三”来讲,key就是“name”,key对应的value是“张三”
- ⼀个key-value对认为是⼀个条⺫(Entry),字典是存储key-value对的容器
特点
- 与数组不同,字典靠key存取元素
- key不能重复,value必须是对象
- 键值对在字典中是⽆序存储的
- 不可变字典(NSDictionary)和可变字典
(NSMutableDictionary)
NSDictionary(不可变字典)
字典⼀旦创建,键值对就不可更改,不可添加,不可删除
仅能读取key或者value
常⽤⽅法
- 创建字典对象
- 获取所有key值,获取所有value值
- 通过key值查询value
NSMutableDictionary(可变字典)
NSDictionary的⼦类
可以对管理的键值对进⾏增、删、改
常⽤⽅法
- 创建字典对象
- 添加键值对
- 修改key对应的value
- 删除键值对
- 通过for循环遍历所有键值对
集合类(set)
特点
- 与数学中的集合⼀样,集合中的元素唯⼀
- 存储的元素是⽆序的
- 存储元素必须是对象类型
- iOS中⽤Set表⽰集合,分NSSet和NSMutableSet
NSSet(不可变集合)
- 创建集合对象
- 获取元素个数
- 获取集合中的某个元素
- 判断集合中是否包含某个对象
NSMutableSet(可变集合)
- 创建集合对象
- 添加元素
- 删除元素
NSCountedSet
- NSCountedSet是NSMutableSet的⼦类
- 能记录元素的重复次数
- 在set的基础上添加了计数功能:- countForObject:
数组、字典、集合的快速遍历
for (<#type *object#> in <#collection#>) {
//object是遍历得到的元素对象
//collection是集合类型的对象:数组、字典、集合
}
结合类型枚举特点
- 数组枚举得到数组中的元素对象
- 字典枚举得到字典中的key值
- 集合枚举得到集合中的元素对象
数组排序
参考资料:
Objective C中数组排序几种情况的总结
//数据源,对数组里面的字典的age属性进行排序
NSMutableArray *array1 = [[NSMutableArray alloc ]initWithObjects:
@{@"name":@"a",@"age":@"22"},
@{@"name":@"b",@"age":@"32"},
@{@"name":@"c",@"age":@"25"},
@{@"name":@"d",@"age":@"45"},
@{@"name":@"e",@"age":@"56"},
nil];
冒泡排序
//冒泡排序
for (int i = 0; i<[array1 count]-1; i++) {
for (int j =0; j<[array1 count]-i-1; j++) {
NSInteger data1 = [array1[j+1][@"age"]intValue];//将对象类型转换为NSInteger
NSInteger data2 = [array1[j] [@"sex"]intValue];//将对象类型转换为NSInteger
if (data1 == MIN(data1, data2)) {//判断data1与data2的大小,当data1<data2时执行交换,即降序排列
//对数组里的数据逆序存放
[array1 exchangeObjectAtIndex:j+1 withObjectAtIndex:j];
}
}
}
简单排序(sortedArrayUsingSelector:)
- [array sortedArrayUsingSelector:<#(SEL)#>]
- [mutableArray sortUsingSelector:<#(SEL)#>]
- @selector,获取⽅法名。这个⽅法名是数组中元素的⽅法。
- 默认使⽤升序排列
void sortArray1(){
NSArray *array = [NSArray arrayWithObjects:@"abc",@"456",@"123",@"789",@"ef",nil];//创建数组
NSArray *sortedArray = [array sortedArrayUsingSelector:@selector(compare:)];//对数组进行排序,默认升序
NSLog(@"排序后:%@",sortedArray);
}