NSArray是有序的, NSDictionary是无序的
NSArray是通过下标访问元素, NSDictionary是通过key访问元素.
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[])
{
@autoreleasepool {
// 创建 Dictionary
NSMutableDictionary * dict1 = [NSMutableDictionary dictionary];
NSMutableDictionary * dict2 = [NSMutableDictionary dictionaryWithCapacity:5];
// 注意: NSDictionary 创建的时候 相同key 只接收 最初的值 , 而NSMutableDictionary 接收 最后添加的值,因为可变.
NSMutableDictionary * dict3 = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"chenglong", @"name1", @"22222", @"name1", @"lilianjie", @"name2", nil];
NSLog(@"%@", dict3);
// 添加键值对
[dict1 setObject:@"chenglong" forKey:@"name1"];
// 注意: NSDictionary 创建的时候 相同key 只接收 最初的值 , 而NSMutableDictionary 接收 最后添加的值,因为可变.
// 使用相同key , 后添加的覆盖 之前的value;
[dict1 setObject:@"11111" forKey:@"name1"];
[dict1 setObject:@"lilianjie" forKey:@"name2"];
NSLog(@"%@", dict1);
// 删除
[dict1 removeObjectForKey:@"name1"];
[dict1 removeAllObjects];
// NSKeyValueCoding.h 里的方法, 不是NSMutableDictionary里的方法...
// 反射的时候会用到此函数 , 且非常好用. 目前setObject 自由度更高.
// - (void)setValue:(nullable ObjectType)value forKey:(NSString *)key;
// key的值 只能是 NSString 类型...
[dict1 setValue:@"333" forKey:@"name3"];
NSLog(@"%@", dict1);
// 修改
[dict1 setObject:@"liubang" forKey:@"name3"];
// 简写形式
dict1[@"name3"] = @"xiangyu";
NSLog(@"%@",dict1);
// 查找
NSArray * arr = [dict3 allKeys];
NSLog(@"%@",arr);
if ([arr containsObject:@"name1"]) {
NSLog(@"%@",dict3[@"name1"]);
}
}
return 0;
}