pragma mark 字典類
字典的存儲(chǔ)是一個(gè)key對應(yīng)一個(gè)value圆裕,稱為鍵值對存儲(chǔ)广鳍,字典的存儲(chǔ)是無序的荆几,字面量創(chuàng)建字典時(shí),key在前value在后赊时,其他方式創(chuàng)建都是value—key這樣對應(yīng)的
字典的添加是:[mDic setObject:@"xiAn" forKey:@“address"];
// 1. 創(chuàng)建一個(gè)字典
NSDictionary *dictionary3 = [NSDictionary dictionaryWithObjectsAndKeys:@"1",@"a",@"2",@"b",@"3",@"c", nil];
NSDictionary *dic = @{@"2":@"3"};//字面量創(chuàng)建不可變字典
// 2. 獲取字典中所有的key吨铸,并且拿到key的個(gè)數(shù)
NSArray *allkeys = [dictionary3 allKeys];
NSLog(@"所有的key:%@", allkeys);
NSLog(@"長度是:%d",(int)[allkeys count]);
// 3.使用for循環(huán)遍歷字典
for (int i = 0; i < [allkeys count]; i++) {
// 3.1 獲取到key
NSString *key = [allkeys objectAtIndex:i];//獲取下標(biāo)為i的key
//3.2根據(jù)獲取到的key訪問value
NSString *value = [dictionary3 objectForKey:key];//找出key的值的值,然后賦值給value
//3.3一次輸出key,value(key是目錄蛋叼,value是內(nèi)容)
NSLog(@"key = %@ value = %@",key,value);
}
pragma mark 不可變的字典
// 創(chuàng)建一個(gè)不可變的字典
NSDictionary *dictionary = [[NSDictionary alloc]initWithObjectsAndKeys:@"zhangsan ",@"mingzi ",@"nan",@"xingbie", nil];
NSLog(@"%@",dictionary);
// 使用數(shù)組創(chuàng)建出字典對象
// 1.創(chuàng)建出key值數(shù)組
NSArray *keyArray = [NSArray arrayWithObjects:@"name",@"gender",@"age", nil];
// 2.創(chuàng)建出value數(shù)值組:value值的數(shù)值元素必須和key數(shù)值元素—— ——對應(yīng)
NSArray *valueArray = [NSArray arrayWithObjects:@"zhansan",@"nan",@"23", nil];
// 3.使用數(shù)組創(chuàng)建字典的方式焊傅,創(chuàng)建出一個(gè)字典對象
NSDictionary *dictionary1 = [[NSDictionary alloc]initWithObjects:valueArray forKeys:keyArray];
NSLog(@"%@",dictionary1);
// 4.使用一個(gè)已知的字典創(chuàng)建新字典
NSDictionary *dictionary2 = [NSDictionary dictionaryWithDictionary:dictionary1];
NSLog(@"%@",dictionary2);
pragma mark可變的字典
// 1.創(chuàng)建一個(gè)可變字典
//便利構(gòu)造器創(chuàng)建
NSMutableDictionary *mDic = [NSMutableDictionary dictionaryWithDictionary:dictionary2];
//字面量創(chuàng)建可變字典
NSMutableDictionary *mDic = [@{@"2":@"3"}mutableCopy];
NSLog(@"%@",mDic);
// 2.獲取字典里面所有key的值,返回值是數(shù)組類型
NSArray *keyArray1 = [dictionary allKeys];
NSLog(@"%@",keyArray1);
// 3.獲取字典里面所有value的值,返回值是數(shù)組類型
NSArray *valueArray1 = [mDic allValues];
NSLog(@"%@",valueArray1);
// 4. 在字典里面通過key值取value
id value = [mDic objectForKey:@"name"];
NSLog(@"%@",value);
// 5. 給可變字典添加建值對的方法
[mDic setObject:@"xiAn" forKey:@"address"];
NSLog(@"%@",mDic);
// 6.修改可變字典的value和給字典添加新建值對的方法一樣狈涮,如果key值以前沒有,則該方法是添加方法鸭栖,如果key值以前存在歌馍,則該方法是修改value方法。
[mDic setObject:@"0" forKey:@"age"];
NSLog(@"%@",mDic);
// 7. 刪除可變字典的鍵值對
// 首先根據(jù)key值來刪除所對應(yīng)的value
[mDic removeObjectForKey:@"gender"];
NSLog(@"%@",mDic);
// 8.將若干個(gè)key封裝在一個(gè)數(shù)組晕鹊,然后作為參數(shù)傳入松却,刪除方法會(huì)根據(jù)數(shù)組中的key刪除對數(shù)組中的key刪除對應(yīng)的value
[mDic removeObjectsForKeys:[NSArray arrayWithObjects:@"address",@"name", nil]];
NSLog(@"%@",mDic);
// 9.刪除字典中的全部value
[mDic removeAllObjects];
NSLog(@"%@",mDic);
// 創(chuàng)建一個(gè)省,里面包含市和區(qū)
// 1.先創(chuàng)建一個(gè)組定義西安的某個(gè)區(qū)溅话,
// 2.在創(chuàng)建一個(gè)組晓锻,定義西安的另一個(gè)區(qū),
// 3.然后創(chuàng)建第三個(gè)組來盛放前兩個(gè)組的內(nèi)容飞几。
// 4.在創(chuàng)建一個(gè)名為西安的字典key是西安砚哆,value是前兩個(gè)組的內(nèi)容(ar3)
// 5.在創(chuàng)建一個(gè)組定義渭南的的某個(gè)區(qū),
// 6.在創(chuàng)建一個(gè)名為渭南的字典key是渭南屑墨,value是(arc)
// 7.在創(chuàng)建一個(gè)組來盛放前兩個(gè)字典的內(nèi)容:(西安和渭南)
// 8.在創(chuàng)建一個(gè)名為陜西的字典key是陜西躁锁,value是前兩個(gè)字典的內(nèi)容(arc1)
// 9.最后輸出內(nèi)容
NSArray *ar1 = [NSArray arrayWithObjects:@"yaTaQu",@"quMing", nil];
NSArray *ar2 =[NSArray arrayWithObjects:@"gaoXinQu",@"quMing", nil];
NSArray *ar3 = [NSArray arrayWithObjects:ar1,ar2 ,nil];
NSDictionary *xiAn = [NSDictionary dictionaryWithObject:ar3 forKey:@"xiAn"];
NSArray *arc = [NSArray arrayWithObjects:@"changYangQu",@"quMing", nil];
NSDictionary *weiNan = [NSDictionary dictionaryWithObject:arc forKey:@"weiNan"];
NSArray *arc1 = [NSArray arrayWithObjects:xiAn,weiNan, nil];
NSDictionary *shengFen = [NSDictionary dictionaryWithObject:arc1 forKey:@"shanXi"];
NSLog(@"%@",shengFen);