一 OC中的集合类型:
/*
NSArray 数组
NSDictionary 字典
NSSet 集
*/
二 字典 NSDictionary 不可变继承自NSObject
1.定义:
1⃣字典中存储的元素都是无序的;
2⃣字典中存储的都是以key:value;称之为键值对
3⃣.key 值必须是唯一的
4⃣打印出来的标志是大括号{}
ps:
NSDictionary *dic = [[NSDictionary alloc]initWithObjectsAndKeys:
@"lili",@"name",
@"18",@"age",
@"man",@"sex",
nil];
NSLog(@"%@",dic);
注意:
1.创建时, value 在前 key 值在后;
2.字典无序;
3. 以 nil 结束
4.value 必须是对象, key 一般是字符串;
2 访问
1⃣ 通过 key 访问 value
公式:objectForKey
NSString *str3 = [dic objectForKey:@"age"];
NSLog(@"%@",str3);
2⃣ 获取所有的 value 值
公式 :allValues
NSString *values =[dic allValues];
NSLog(@"%@",values);
3⃣ 获取所有 key 值
公式:dic allKeys
NSString *keys= [dic allKeys];
NSLog(@"%@",keys);
4⃣ 获取字典中键值对的对数
公式:dic count
NSUInteger count = [dic count];
NSLog(@"%lu",count);
��️ 用 key拿 value 值
公式:valueForKey
NSString * str7= [dic valueForKey:@"age"];
NSLog(@"%@",str7);
3 遍历字典
//方法1. NSUInteger count = [dic count];
for (NSInteger i= 0; i <count; i++) {
// [dic allkeys] 返回一个数组,
// ObjectAtIndex:取出数组中的元素
NSString *key = [[dic allKeys] objectAtIndex:i];
// 通过 key 值再去字典中对于的 value 值
NSString *value = [dic objectForKey:key];
NSLog(@"%@= %@",key,value);}
//方法2
for (NSString *key in [dic allKeys]) {
NSLog(@"%@=%@",key,[dic objectForKey:key]);
}
//方法3 快速枚举取的是字典中的key 值
for (NSString *key in dic) {
NSLog(@"%@=%@",key,[dic objectForKey:key]);
}
- 枚举
快速枚举(增强型for 循环);
// OC中提供的快速遍历集合的循环,使用 forin 遍历数组,不需要关心数组元素的个数,她内部会自动处理
// 每一次循环都把当前数组元素的值赋值给你提供的变量 (ps nsstring*str)
// 在内部添加NSlog 的语句,或者其他的功能语句
// 在快速枚举中不能对数组元素做修改操作 比如删除某个元素
3.NSMutableDictionary 继承 NSDictionary 3.1 定义:可变字典
NSMutableDictionary *mdic = [[NSMutableDictionary alloc]initWithCapacity:0];
先设定为空 在往里赋值 修改
3.2 修改值
1⃣ 添加
[mdic setObject:@"xiaohua" forKey:@"singer"];
[mdic setObject:@"xiaoli" forKey:@"actor"];
[mdic setObject:@"xiaolong" forKey:@"teacher"];
NSLog(@"%@",mdic);
2⃣ 修改 key 对于的 value 值
[mdic setObject:@"mingm" forKey:@"singer"];
3⃣ 删除键值对 删除 key 值就可以了
[mdic removeObjectForKey:@"actor"];
NSLog(@"%@",mdic);
4⃣ 清空字典
[mdic removeAllObjects];
和数组的差不多