您好,登錄后才能下訂單哦!
首先說幾個OC里快速生成對象的幾個方法(即語法糖):
(1) @ + 數字 即快速將基本數據類型轉換為NSNumber類型的對象,如:@20, (@后面直接跟了一個確切的數字) 如果是一個變量即 int a = 10 ,則為:@(a)
(2) 數組對象 = @ + [ ](中括號里的內容時對象), 快速創建數組對象 例如:NSArray *arr = @[@"name",@"number",@22,@7]; 這樣創建的數組是不可改變的數組
(3) 數組名 + [下標] 快速獲取數組下標對應的元素, 如: arr[1] 就是獲取數組arr中的第二個元素number
一, 字典
字 典: 也是一個大容器,用來存儲多個數據,而且存儲的數據具有一一對應關系,(使用key來標識value值) ,字典里的key是唯一的,一個key只能對應一個value,但是一個value可以對應多個key.對于字典的一對鍵值對(即key-value)叫 做字典的一個元素,也叫做一個條目,它存儲的內容不限制對象類型,但是只能用來存儲對象同時字典是無序的,
(一), 不可改變字典 NSDictionary
這里以下的例子都以
NSDictionary *dic = [NSDictionary dictionaryWithObjectsAndKeys:@"Lili",@"name",@20,@"height",@12,@"age", nil];
NSLog(@"%@",dic); 為例,不再贅述
1,創建字典對象
1),便利構造器 dictionaryWithObjectsAndKeys:
NSDictionary *dic = [NSDictionary dictionaryWithObjectsAndKeys:@"Lili",@"name",@20,@"height",@12,@"age", nil];
NSLog(@"%@",dic);
2),初始化方法 initWithObjectsAndKeys:
NSDictionary *dic1 = [[NSDictionary alloc] initWithObjectsAndKeys:@"Lili",@"name",@20,@"height",@12,@"age", nil];
NSLog(@"%@",dic1);
2,求字典元素個數 count 其實 count 這個方法在數組里,在字典里,在集合里都有,并且都是用來計算相應容器(數組,字典,集合等)的元素個數
NSUInteger count = [dic count];
NSLog(@"%lu",count);
3,獲取所有的key allKeys
NSArray *keys = [dic allKeys];
NSLog(@"%@",keys);
4,根據key獲取對應的value objectForKey: 返回值為字符串對象 這里objectForKey后面沒有加s 說明只是取出其中的一個元素,而不是全部,即體現了OC里方法名的見名知意,我們在學習過程中可以根據方法名大概猜測出方法的實現內容
NSString *name = [dic objectForKey:@"name"];
NSLog(@"%@",name);
NSNumber *age = [dic objectForKey:@"age"];
NSLog(@"%@",age);
NSNumber *height = [dic objectForKey:@"height"];
NSLog(@"%@",height);
下面一個例子是把字典里的key的對應值都取出來存在一個數組里 allValues 返回值是數組對象
NSArray *values = [dic allValues];
NSLog(@"%@",values);
5,字典快速遍歷;
forin在遍歷數組時,遍歷的是數組中的每個元素, 在對字典快速遍歷時,遍歷的是字典中的key,然后通過key獲取對應的value值 因此forin 里type對應的類型是key對應的對象類型
for (NSString *dic1 in dic) {
//檢索到key時,通過objectForKey:獲取對應的value值
NSLog(@"%@",[dic objectForKey:dic1]);
}
(二),可改變字典 NSMutableDictionary
1,創建字典對象
便利構造器 dictionaryWithObjectsAndKeys:
NSMutableDictionary *mudic =[NSMutableDictionary dictionaryWithObjectsAndKeys:@"Lili",@"name1",@"Frank",@"name2",@12,@"age1",@14,@"age2", nil];
2,求字典元素個數 count
NSLog(@"%lu",[mudic count]);
3,刪除元素 removeObjectForKey: 給定一個key值刪除對應的value值,
removeAllObjects 刪除所有條目
[mudic removeObjectForKey:@"name2"];
NSLog(@"%@",mudic);
[mudic removeAllObjects];
NSLog(@"%@",mudic);
4,添加元素 setObject: forKey:
[mudic setObject:@"Duke"forKey:@"name3"];
NSLog(@"%@",mudic);
5,修改key對應的value setObject: forKey: 跟添加元素是同一個方法
在這里setObject:forKey: 根據指定的key查找是否有對應的value如果沒有就添加進去即添加元素,若存在該key對應的value則將其修改為指定的value值,即修改對應的value
[mudic setObject:@"Frank"forKey:@"name3"];
NSLog(@"%@",mudic);
(三)NSSet不可變集合
集合也是一個大容器,具有確定性,唯一性,無序性 .里面可以存儲任何類型的對象
1,創建一個集合對象
(1)b便利構造器 setWithObjects:
NSSet *set1 = [NSSet setWithObjects:@"1",@"2",@"3",@"4",@"age1",@14,@"age2", nil];
NSLog(@"%@",set1);
(2)初始化方法 initWithObjects:
set1 = [[NSSetalloc] initWithObjects:@"1",@"2",@"3",@"4",@"5",@"6", nil];
NSLog(@"%@",set1);
2,獲取集合中的某個元素 anyObject 第一次隨機取出一個元素后,再多次取出,每次都和第一次取出的一樣
NSString *set = [set1 anyObject];
NSLog(@"%@",set);
NSString *set5 = [set1 anyObject];
NSLog(@"%@",set5);
NSString *set2 = [set1 anyObject];
NSLog(@"%@",set2);
NSString *set3 = [set1 anyObject];
NSLog(@"%@",set3);
NSString *set4 = [set1 anyObject];
NSLog(@"%@",set4);
3,獲取元素個數 count
NSLog(@"%lu",[set1 count]);
4,判斷集合中是否包含某個對象 containsObject:
NSLog(@"%d",[set1 containsObject:@"1"]);
(四),可改變集合 NSMutableSet
1,創建一個集合對象 setWithObjects:
NSMutableSet * muset = [NSMutableSet setWithObjects:@"1",@"2",@"3",@"4",@"age1",@14,@"age2", nil];
1,添加元素 addObject:
[muset addObject:@"88"];
NSLog(@"%@",muset);
2,刪除元素 removeObject:
[muset removeObject:@"88"];
NSLog(@"%@",muset);
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。