認識字典
字典是用存儲鍵值對的數據結構;每一個鍵對應一個值,在一個字典中,鍵是唯一的,值可以重複。值纔是目的,鍵是手段(爲了可以快速的獲取值)
key : value
key和value都可以是任意類型的對象,但是我們的key一般使用字符串
//數組中元素是有順序的,字典中的元素沒有順序
字典也分爲可變字典和不可變,(可變指字典的大小可變,字典的元素可變)
一、字典的初始化
******NSDictionary*******
//簡單粗暴的創建一個字典
NSDictionary * dictionary = @{@"key1":@"value1",@"key2":@"value2",@"key3":person};
NSLog(@"%@",dictionary);
//========使用對象方法初始化一個字典==創建並初始化一個空的字典
NSDictionary * dcit = [[NSDictionary alloc] init];
//=========使用類方法初始化一個字典==創建一個空的字典
NSDictionary * dict4 = [NSDictionary dictionary];
//使用不同的鍵值對初始化一個字典
NSDictionary * dict1 = [[NSDictionary alloc] initWithObjectsAndKeys:@"ob1",@"key1",@"ob2",@"key2",person,@"person", nil];
//使用一個字典去初始化另外一個字典
NSDictionary * dict2 = [[NSDictionary alloc] initWithDictionary:dict1];
//使用兩個數組,把一個數組的元素作爲值,另外一個數組的元素作業鍵,來初始化一個字典
NSArray * values = @[@"aaa",@"bbb",@"ccc",@"aaa"];
NSArray * keys = @[@"1",@"3",@"2",@"4"];
//values和keys的數組元素個數必須相等
NSDictionary * dict3 = [[NSDictionary alloc] initWithObjects:values forKeys:keys];
*******NSMutableDictionary******
//創建一個空的可變字典
NSMutableDictionary * mdict = [[NSMutableDictionary alloc] init];
//簡單粗暴的方式創建字典是,前面是key:後面是value
NSDictionary * dict = @{@"aaa":@"11",@"bbb":@"22"};
//使用一個字典去初始化另外一個字典
NSMutableDictionary * mdict2 = [[NSMutableDictionary alloc] initWithDictionary:dict];
//使用兩個數組,把一個數組的元素作爲值,另外一個數組的元素作業鍵,來初始化一個字典
NSArray * keys = @[@"a",@"b",@"c"];
NSArray * values = @[@"aaa",@"bbb",@"ccc"];
NSMutableDictionary * mdict3 = [[NSMutableDictionary alloc] initWithObjects:values forKeys:keys];
#pragma mark 鍵值對個數
//- NSUInteger count;
//獲取字典的鍵值對個數
NSUInteger count = [dict7 count];
NSLog(@"%lu",count);
#pragma mark 通過鍵獲取值
//- (id)objectForKey:(id)aKey;
id value = [dict7 objectForKey:@"3"];
NSLog(@"%@",value);
id value2 = dict7[@"3"]; //不推薦
NSLog(@"%@",value2);
#pragma mark 獲取所有的鍵
NSArray * allKeys = [dict7 allKeys];
NSLog(@"%@",allKeys);
#pragma mark 獲取所有的值
NSArray * allValues = [dict7 allValues];
NSLog(@"%@",allValues);
#pragma mark 通過值找鍵
NSArray* objectKeys = [dict7 allKeysForObject:@"aaa"];
NSLog(@"%@",objectKeys);
#pragma mark 遍歷字典
//in前面的對象返回的字典的key
for (id key1 in dict7) {
NSLog(@"%@<-->%@",key1,[dict7 objectForKey:key1]);
}
NSLog(@"===============");
NSArray * key2s = [dict7 allKeys];
for (int i = 0; i < [key2s count]; i++) {
id key2 = [key2s objectAtIndex:i];
NSLog(@"%@<-->%@",key2,[dict7 objectForKey:key2]);
}
字典在以後的開發中經常使用到,比如數據的請求和解析,數據的緩存等等