NSDictionary 字典 集合NSSet
阿新 • • 發佈:2019-01-28
<span style="font-size:18px;">/*字典存在的價值 : 0. 字典類是用於儲存具有對映關係(key - value對)的資料, 字典一旦建立,鍵值對就不可更改, 不可新增, 不可刪除.僅能讀取key 或者 value 1. 大容器,用來儲存多個數據, 2.用來儲存的資料具有--對應的關係.(使用key 來標識 value). 3.對於字典中的一對鍵值對(key - value)叫做字典中的一個元素. 也叫一個條目, 只要是物件就可以, 不限制類型. 4.字典是無序的 5.字典中的key是唯一的, 一個key 只能對應一個value ,一個value 可以對應多個 key.*/ //1.建立字典物件 //(1)便利構造器 NSDictionary *dic = [NSDictionary dictionaryWithObjectsAndKeys:@"Summer", @"name", @"male", @"gender", @20, @"height", @12, @"age", nil]; NSLog(@"%@", dic); //(2)初始化方法 NSDictionary *dic1 = [[NSDictionary alloc] initWithObjectsAndKeys:@"Summer", @"name", @"male", @"gender", @20, @"height", @12, @"age", nil]; NSLog(@"%@", dic1); //2.求字典元素個數 NSInteger count = [dic count]; NSLog(@"count = %ld", count); //3.獲取所有的key NSArray *keys = [dic allKeys]; NSLog(@"%@", keys); //4獲取所有的value NSArray *value = [dic allValues]; NSLog(@"%@", value); //5.根據key獲取對應的value //通過為物件字典傳送objeForKey訊息可以根據給定的key去獲取對應的value,這裡如果給定的key不存在,則返回null作為value,表示沒有找到對應的value. NSString *name = [dic objectForKey:@"name"]; NSLog(@"name = %@", name); NSNumber *age = [dic objectForKey:@"age1"]; NSLog(@"age = %@", age); NSString *gender = [dic objectForKey:@"gender"]; NSLog(@"gender = %@", gender); NSNumber *height = [dic objectForKey:@"height"]; NSLog(@"height = %@", height); //字典快速遍歷 //快速遍歷: 對於陣列來說,遍歷得到的是陣列中的每一個元素 //對於字典來說, 遍歷得到的是字典中的key, 然後通過key 獲取 value for (NSString *key in dic) { //檢索到key之後,通過objectForKey 獲取key對於的value NSLog(@"%@", [dic objectForKey:key]); } //對於可變字典來說,比不可變字典多了增加, 刪除, 修改操作 //1.建立物件 NSMutableDictionary *mutableDic = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"Summer", @"name1", @"Sunshine", @"name2", @"Angle", @"name3", nil]; NSLog(@"%@", mutableDic); //2.求字典元素個數 NSInteger count = [mutableDic count]; NSLog(@"count = %ld", count); //3.刪除元素 [mutableDic removeObjectForKey:@"name3"]; NSLog(@"%@", mutableDic); [mutableDic removeAllObjects]; NSLog(@"%@", mutableDic); //批量刪除 [mutableDic removeObjectsForKeys:[NSArray arrayWithObjects:@"name1", @"name2", nil]]; NSLog(@"%@", mutableDic); //4.新增元素 [mutableDic setObject:@"Kimi" forKey:@"name1"]; NSLog(@"%@", mutableDic); //5.修改key對應的value [mutableDic setObject:@"Angle" forKey:@"name1"]; NSLog(@"%@", mutableDic); //setObject: forKey: 工作原理 // 先根據指定得key查詢字典中是否存在相同的key.(查詢字典中是否存在指定的key).如果存在則修改key對應的value. 如果不存在,在字典中新增一個元素,key - value 鍵值對</span>
<span style="font-size:18px;">
</span>
<pre name="code" class="objc"><span style="font-size:18px;">//集合 //1.集合與數學集合一樣, 儲存的元素互不相同(互異性)(唯一性). //2.儲存的元素無序性 //3.儲存元素必須是物件型別 //1.建立集合物件 //(1)遍歷構造器方法 NSSet *set1 = [NSSet setWithObjects:@"Summer", @"Sunshine", @"Angle", @"procedure", @"oriented", @"programming", nil]; NSLog(@"%@", set1); //(2)初始化方法 NSSet *set2 = [[NSSet alloc] initWithObjects:@"Summer", @"Sunshine", @"Angle", @"procedure", @"oriented", @"programming", @"Object", @"oriented", @"programming", nil]; NSLog(@"%@", set2); //2.獲取元素個數 NSInteger count = [set2 count]; NSLog(@"count = %ld", count); //3.獲取集合中的某個元素(為了方便性) NSString *str1 = [set2 anyObject]; NSLog(@"%@", str1); NSString *str2 = [set2 anyObject]; NSLog(@"%@", str2); NSString *str3 = [set2 anyObject]; NSLog(@"%@", str3); NSString *str4 = [set2 anyObject]; NSLog(@"%@", str4); NSString *str5 = [set2 anyObject]; NSLog(@"%@", str5); //4.判斷集合中是否包含某個物件 BOOL isExist = [set2 containsObject:@"Summer"]; NSLog(@"%d", isExist); </span>
<span style="font-size:18px;">//可變集合 NSMutableSet *set2 = [[NSMutableSet alloc] initWithObjects:@"Summer", @"Sunshine", @"Angle", @"procedure", @"oriented", @"programming", @"Object", @1, @"programming", @"programming", @"programming", @1, @1,nil]; NSLog(@"%@", set2); //1.新增元素 [set2 addObject:@"Cindy"]; NSLog(@"%@", set2); //2.移除元素 [set2 removeObject:@"Summer"]; NSLog(@"%@", set2); //求帶有記錄物件重複次數的子類NSCountSet NSCountedSet *countedSet = [NSCountedSet setWithObjects:@"programming", @"programming",@"programming",nil]; //通過例項方法countForObject:來得到指定物件的重複次數 NSInteger count = [countedSet countForObject:@"programming"]; NSLog(@"count = %ld", count); </span>