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;
}