我的iOS學習歷程 - OC第五天

今天主要講的是字典的應用,其次講了集合(主要在於字典)

配套練習請點擊這裏下載觀看

                                      main函數

字典是一個容器跟數組一樣可以保存數據,保存的形式是以鍵值對的形式保存

key:

      1.一個key對應一個value

      2.keyValue必須是對象

      3.key作爲鑰匙要具有唯一性在開發中一般使用字符串作爲key

value:

      1.value可以是一個很複雜的結構例如字典裏再套一個字典

      2.字典裏保存的鍵值對是無序的

不可變字典切記不能對不可變字典進行增刪    

      用兩個數組來初始化一個不可變字典

key的數組    

NSArray *keys = @[@"name",@"sex",@"age"];

values的數組

<span style="font-size:18px;">NSArray *values =@[@"wanglong",@"man",@"18"];
NSDictionary *dic = [NSDictionary dictionaryWithObjects:values forKeys:keys];
NSLog(@"%@",dic);</span>
自定義初始化方法

    NSDictionary *dic = [[NSDictionary alloc]initWithObjects:values forKeys:keys];
初始化一個字典

      使用該方法初始化切記value : key順序

NSDictionary *dic = [NSDictionary dictionaryWithObjectsAndKeys:
                        @"wanglong",@"name",
                        @"man",@"sex",
                        @"18",@"age",
                        nil];
NSLog(@"%@",dic);
// 把所有key取出來
NSArray *key = [dicallKeys];
NSLog(@"%@",key);
NSDictionary *dic = [[NSDictionary alloc]initWithObjectsAndKeys:
    @"wanglong",@"name",
    @"nan",@"sex",
    @"18",@"age",
    nil];
NSLog(@"%@",dic);
// 取出所有value
NSArray *value = [dicallValues];
    

語法糖

    初始化順序 key : value(與其他幾種初始化方法相反)

<span style="font-size:18px;">NSDictionary *dic =@{@"name":@"wanglong",@"sex":@"nan",@"age":@"18"};
NSLog(@"%@",dic);</span>

根據key取出字典中的value

要知道你取出的是什麼類型就用什麼類型去接收他

NSString *value = [dic objectForKey:@"name"];
NSLog(@"%@",value);
    // 語法糖 取出字典中key對應的value
NSString *age = dic[@"age"];
NSLog(@"%@",age);
    // 獲取字典的元素個數
NSLog(@"%lu",[diccount]);


********************************************************************************

                                                                              可變字典

初始化一個空字典

      切記:必須進行初始化才能使用字典

NSMutableDictionary *dic = [NSMutableDictionary dictionary];
    // 初始化的時候 給一個建議的容量 (初始化一個空字典)
NSMutableDictionary *dic1 = [[NSMutableDictionaryalloc]initWithCapacity:10];
NSMutableDictionary *dic = [[NSMutableDictionary alloc]init];
    // 添加鍵值對
[dic setObject:@"wanglong" forKey:@"name"];
[dic setObject:@"nan" forKey:@"sex"];
[dic setObject:@"age" forKey:@"18"];
NSLog(@"%@",dic);
[dic removeObjectForKey:@"sex"];
NSLog(@"%@",dic);
    // 刪除所有鍵值對
[dic removeAllObjects];
NSLog(@"%@",dic);

練習:創建字典,管理前三排學生,每排爲一組並輸出

NSMutableArray *array1 = [NSMutableArray arrayWithObjects:@"血樣",@"趙姐",@"張文",@"壯壯",nil];
NSMutableArray *array2 = [NSMutableArrayarrayWithObjects:@"大君",@"聽聽",@"之言",@"兵器",nil];
NSMutableArray *array3 = [NSMutableArrayarrayWithObjects:@"z",@"a",@"s",@"d",nil];
NSMutableDictionary *dic = [[NSMutableDictionary alloc]init];
[dic setObject:array1 forKey:@"第一排"];
[dic setObject:array2 forKey:@"第二排"];
[dic setObject:array3 forKey:@"第仨排"];
NSLog(@"%@",dic);
    

創建一個字典姓名:王龍性別:年齡:18把各個信息打印出來(如果整個打印暫時沒法打印文字)

NSMutableDictionary *dic = [[NSMutableDictionary alloc]initWithObjectsAndKeys:
                               @"王龍",@"姓名",@"男",@"性別",@"18",@"年齡" ,nil];
// 獲取所有的key
NSArray *array = [dicallKeys];
for (int n =0; n < [array count]; n++) {
        // 取出每一個key
        NSString *key = array [n];
        NSString *value = dic[key];
        // 打印一下
        NSLog(@"%@ = %@  ",key,value);
}
 

快速遍歷

    for (填容器裏對象的類型例如(NSString *str)in要遍歷的容器(數組或字典)) {

        NSLog(@"%@",str);

    }

使用快速遍歷forin

1.遍歷字典是遍歷的字典中的所有key

2.遍歷數組是遍歷數組中的每一個元素

 NSMutableDictionary *dic = [[NSMutableDictionary alloc]initWithObjectsAndKeys:
                                               @"王龍",@"姓名",@"男",@"性別",@"18",@"年齡" ,nil];
for (NSString *objin dic) {
// 用所有key取出value
NSLog(@"%@:%@",obj,dic[obj]);
}

                                                                       集合:無序不重複

1.不可變集合

      三種初始化方法

[NSSet *set = [NSSet set];
NSSet *set1 = [NSSet setWithObjects:@"d",nil];
NSSet *set2 = [NSSet setWithArray:NSArray *];
NSSet *set = [[NSSet alloc]initWithObjects:@"1",@"2",@"3",@"2",@"4",nil];
// 獲取長度
NSLog(@"%lu",[set count]);
NSLog(@"%@",set);
// 獲取集合中的一個元素
// 返回一個計算機認爲最合理的一個元素
NSString *str = [set anyObject];
NSLog(@"%@",str);


2.可變集合

初始化空的集合

NSMutableSet *set = [NSMutableSet set];
// 添加元素
[set addObject:@"2"];
[set addObject:@"2"];
[set addObject:@"3"];
[set addObject:@"4"];
NSLog(@"%@",set);
// 刪除2元素
[set removeObject:@"2"];
NSLog(@"%@",set);
// 刪除所有元素
[set removeAllObjects];
NSLog(@"%@",set);

計算重複元素的個數的集合(可以用於計算以數組爲參數初始化的集合數組重複的元素個數)如果計算的是普通的初始化方法的集合重複元素不管多少個都是1(countforobject)

componentsSeparatedBystring(切割字符串)

    

    

                                                                                 數組排序

1.不可變數組排序方法

NSArray *array = @[@"A",@"B",@"D",@"W",@"S"];
NSArray *array1 = [array sortedArrayUsingSelector:@selector(compare:)];
NSLog(@"%@",array1);
  

2.可變數組排序

不需要返回值 因爲操作的是原數組

NSMutableArray *array = [NSMutableArray arrayWithObjects:@"1",@"3",@"7",@"5",nil];
[array sortUsingSelector:@selector(compare:)];
NSLog(@"%@",array);

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章