NSDictionary
NSDictionary
是一组与唯一秘钥关联的元素的静态集合,NSDictionary满足一下几个性质:
- 所有的元素与秘钥为一对一关系。
- 每个秘钥都是不相同的,唯一的。
NSDictionary
中的所有元素都是无序的。
创建方式
NSDictionary *dic1 = [[NSDictionary alloc]init];
NSDictionary *dic2 = [NSDictionary new];
NSDictionary *dic3 = [NSDictionary dictionary];
//创建并赋值
NSDictionary *dic4 = [[NSDictionary alloc]initWithObjectsAndKeys:@"1",@"a",@"2",@"b", nil];
NSDictionary *dic5 = @{@"a":@"1",@"b":@"2"};
复制代码
常用方法
获取字典Count
@property (readonly) NSUInteger count;
- 只读,获取字典内元素总数。
- 用法:
dic.count; 复制代码
获取所有秘钥
@property (readonly, copy) NSArray<KeyType> *allKeys;
- 只读,获取字典内所有的秘钥。
- 用法:
NSArray *array = [dic allKeys]; //获取字典 dic 中所有的秘钥 复制代码
获取所有元素
@property (readonly, copy) NSArray<ObjectType> *allValues;
- 只读,获取字典内所有的元素。
- 用法:
NSArray *array = [dic allValues]; //获取字典 dic 中所有的元素 复制代码
根据秘钥获取元素
- (nullable ObjectType)objectForKey:(KeyType)aKey;
- 根据指定秘钥,获取字典内对应的元素。
- 用法:
[dic objectForKey:@"a"]; //获取字典 dic 内秘钥为 "a" 的元素 复制代码
字典的快速枚举
// 遍历字典内的key
for (NSString *str in dic)
NSLog(@"%@",str);
// 遍历字典内的value,由于字典的内容不一定是字符串,所以用id
for (id item in [dic5 allValues])
NSLog(@"%@",item);
复制代码
NSMutableDictionary
NSMutableDictionary
即为元素与唯一秘钥对应的动态集合,称为可变字典,简单的讲,NSMutableDictionary
与NSDictionary
的区别就是NSMutableDictionary
可以进行元素的增删改操作,而NSDictionary
只能进行查询操作。
创建方式
NSMutableDictionary *mDic1 = [NSMutableDictionary new];
NSMutableDictionary *mDic2 = [[NSMutableDictionary alloc]init];
NSMutableDictionary *mDic3 = [NSMutableDictionary dictionary];
//设定元素数量为10 超过时自动增加
NSMutableDictionary *mDic4 = [NSMutableDictionary dictionaryWithCapacity:10];
复制代码
增加\修改元素
- (void)setObject:(ObjectType)anObject forKey:(KeyType <NSCopying>)aKey;
- 为字典增加一个元素和对应的秘钥。
- 用法
[dic setObject:@"value1" forKey:@"key1"]; 复制代码
- 修改元素也只需要调用这个方法,并输入
key
值想要修改的元素的秘钥即可 - 用法
[dic setObject:@"value2" forKey:@"key1"]; 复制代码
删除元素
- (void)removeObjectForKey:(KeyType)aKey;
- 删除字典中指定秘钥的元素。
- 用法:
[dic removeObjectForKey:@"key1"]; 复制代码
- (void)removeAllObjects;
- 删除字典内所有元素。
- 用法
[dic removeAllObjects]; 复制代码
- (void)removeObjectsForKeys:(NSArray<KeyType> *)keyArray;
- 根据一个秘钥数组来批量删除字典内元素。
- 用法
NSArray *arr = @[@"key1",@"key2"]; [dic removeObjectsForKeys:arr]; 复制代码