//
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[]) {
@autoreleasepool {
/*
首先,NSDictionary 数组,是以键值对的形式存储数据的. 往其中存储数据是可以的,但是必须要为存储的数据取 1 个别名,通过这个别名来找到存储在这个数组中的数据.
NSDictionary 字典数组一旦创建完毕. 其键值对的个数就固定.并且无法删除、新增键值对*/
// 创建一个空的字典,这个是没有意义的,因为无法动态的新增删除
NSDictionary *xwj = [NSDictionary dictionaryWithObjectsAndKeys:@"obj",@"name",@"3",@"index", nil];
// 快速创建字典的方法
NSDictionary *xwj1 = @{@"key":@"value1",@"key1":@"value2"};
NSLog(@"%@",xwj1);
// 得到字典中的个数
// @protocol(readonly)NSUInteger count; // 这个是只读的.
NSUInteger num = xwj1.count;
// 得到字典数组中键对应的值.
NSDictionary *xwj2 = @{@"name":@"xieXiaoCai",@"age":@"25"};
NSString *str = [xwj2 objectForKey:@"name"];
NSString *age = xwj2[@"age"];
// 如果给的键不存在,根据哈希算法取出来的是nil不会报错的
// NSDictionary的遍历
// 使用for in 遍历
for(id key in xwj2)
{
NSLog(@"%@,%@",key,[xwj2 objectForKey:key]);
}
/*
增强for循环遍历字典数组,遍历出来的仅仅是字典数组中的所有的键,拿到键以后,我们可以根据取到的键对应的值.key是迭代数组中每一个键,通过键取到相对应得值.
*/
// 遍历字典之blick
[xwj2 enumerateKeysAndObjectsUsingBlock:^(id _Nonnull key, id _Nonnull obj, BOOL * _Nonnull stop) {
NSLog(@"%@,%@",key,obj);
// 同样的原理key 遍历出来的键值对的键
// obj代表遍历出来的键值对的值
}];
// 关于可变字典数字的介绍
// 创建可变字典数组
// 这个就是创建了一个可变数组,因为是可变的所以可以动态的新增和删除.
NSMutableDictionary *xwj3 = [NSMutableDictionary dictionary];
// 如何新增键值对?
[xwj3 setObject:@"name" forKey:@"xwjs"];
// 如何删除键值对?
[xwj3 removeObjectForKey:@"name"];
// 删除所有的键值对
[xwj3 removeAllObjects];
// 快速创建一个可变的字符串
NSMutableDictionary *xwj4 = @{@"name":@"xwj",@"age":@"26",@"height":@"180"};
// 快速迭代
[xwj4 enumerateKeysAndObjectsUsingBlock:^(id _Nonnull key, id _Nonnull obj, BOOL * _Nonnull stop) {
NSLog(@"%@,%@",key,obj);
}];
// 以上这些就是字典的粗浅的应用,时间仓促,比较晚了,改天在写吧
}
return 0;
}