字典的基本概念數組
OC中的字典(NSDictionary,NSMutableDictionary)是由鍵-值對組成的數據集合.正如,咱們在字典裏查找單詞的定義同樣.spa
經過key(鍵),查找的對應的value(值),key一般是字符串對象,也能夠是其餘任意類型對象.在一個字典對象中,key的值必須是惟一的.code
此外,字典對象的鍵和值不能夠爲空(nil),若是須要在字典中加入一個空值,能夠加入NSNull對象orm
字典中存儲方式是無序的,由於字典是沒有下標的!!!對象
字典中存儲方式是無序的,由於字典是沒有下標的!!!three
字典中存儲方式是無序的,由於字典是沒有下標的!!!ci
NSDictionary(字典)rem
字典的初始化字符串
key不要重複,重複了只識別第一個it
int main(int argc, const char * argv[]) { @autoreleasepool { //不可變字典 //只有一個鍵值對的字典初始化 //將整數1轉化成NSNumber類型,用a存放 NSNumber *a = [NSNumber numberWithInt:1]; //定義一個只有一個鍵值對的字典b,value值是"xiaoming", key值是a(其實就是1) NSDictionary *b = [NSDictionary dictionaryWithObject:@"xiaoming" forKey:a]; NSLog(@"%@", b); //定義一個有多個鍵值對的字典 NSDictionary *c = [NSDictionary dictionaryWithObjectsAndKeys:@"xiaoming", @"one", @"xiaohong", @"two", @"xiaoqiang", @"three", nil]; NSLog(@"%@", c); } return 0; }
獲取字典鍵值對的個數
int main(int argc, const char * argv[]) { @autoreleasepool { //定義一個有多個鍵值對的字典 NSDictionary *a = [NSDictionary dictionaryWithObjectsAndKeys:@"xiaoming", @"one", @"xiaohong", @"two", @"xiaoqiang", @"three", nil]; //使用[a count]獲取字典鍵值對的個數 NSLog(@"%lu", (unsigned long)[a count]); } return 0; }
根據字典裏面的key 獲取value
int main(int argc, const char * argv[]) { @autoreleasepool { //定義一個有多個鍵值對的字典 NSDictionary *a = [NSDictionary dictionaryWithObjectsAndKeys:@"xiaoming", @"one", @"xiaohong", @"two", @"xiaoqiang", @"three", nil]; //根據字典a裏面的key@"two", 獲取它"two"所對應的value值 //使用 NSString 來接收!!! NSString *b = [a objectForKey:@"two"]; NSLog(@"%@", b); } return 0; }
拿到字典裏面相同 value 的全部 key
int main(int argc, const char * argv[]) { @autoreleasepool { //定義一個有多個鍵值對的字典 NSDictionary *a = [NSDictionary dictionaryWithObjectsAndKeys:@"xiaoming", @"one", @"xiaoming", @"two", @"xiaoqiang", @"three", @"xiaoming", @"four", nil]; //拿到字典a裏面全部valu是@"xiaoming"的key,新建一個數組b來存放 NSArray *b = [a allKeysForObject:@"xiaoming"]; NSLog(@"%@", b); } return 0; }
NSMutableDictionary(可變字典)
可變字典的初始化 及 賦值
int main(int argc, const char * argv[]) { @autoreleasepool { //可變字典的初始化 //方法1)給可變字典a初始化了一個空間 NSMutableDictionary *a = [[NSMutableDictionary alloc]initWithCapacity:10]; NSLog(@"%@", a); //方法2)給可變字典a初始化了一個空間 NSMutableDictionary *c = [NSMutableDictionary dictionary]; NSLog(@"%@", c); //a,c打印都是空的 //給可變字典b添加了多個鍵值對 NSMutableDictionary *b = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"xiaoming", @"one", @"xiaohong", @"two", @"xiaoqiang", @"three", @"xiaogang", @"four",nil]; NSLog(@"%@", b); } return 0; }
向可變字典添加一個字典
int main(int argc, const char * argv[]) { @autoreleasepool { //向可變字典添加一個字典 //新建一個可變字典a NSMutableDictionary *a=[NSMutableDictionary dictionaryWithObjectsAndKeys:@"xiaoming", @"one", @"xiaohong", @"two", @"xiaoqiang", @"three", nil]; //新建一個可變字典b NSDictionary *b = [NSDictionary dictionaryWithObject:@"xiaogang" forKey:@"four"]; //將b字典添加到a字典裏面 //--------------字典裏面是無序的,由於字典裏面是沒有下標的!!!----------------- [a addEntriesFromDictionary:b]; NSLog(@"%@", a); } return 0; }
設置字典字典的value
key同樣更新value
Key不同添加鍵值對
int main(int argc, const char * argv[]) { @autoreleasepool { //設置可變字典中的value //新建一個可變字典a NSMutableDictionary *a=[NSMutableDictionary dictionaryWithObjectsAndKeys:@"xiaoming", @"one", @"xiaohong", @"two", @"xiaoqiang", @"three", nil]; NSLog(@"%@", a); //經過可變字典a中的key@"one", 改變它所對應的value值 [a setValue:@"xiaogang" forKey:@"one"]; //打印出來:由於字典a裏面有key@"one",因此key@"one"所對應的value變成了@"xiaogang" NSLog(@"%@", a); //由於字典a裏面沒有key@"four",因此新添加一個鍵值對 [a setValue:@"xiaoliu" forKey:@"four"]; //打印出來:在原有字典a裏面新添加一個鍵值對four = xiaoliu; NSLog(@"%@", a); } return 0; }
將字典裏面的值所有設置成新值
int main(int argc, const char * argv[]) { @autoreleasepool { NSMutableDictionary *a = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"xiaoming", @"one", @"xiaohong", @"two", @"xiaoqiang", @"three", nil]; NSMutableDictionary *b = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"xiaogang", @"four", @"xiaoliu", @"five", nil]; //將字典a裏面的全部值所有設置成了b裏面的值,至關於所有設置新值 [a setDictionary:b]; //打印出a裏面是b的值,由於已經所有設置成了b的值 NSLog(@"%@", a); } return 0; }
根據key刪除相對應的value,等於刪除字典中這個元素
int main(int argc, const char * argv[]) { @autoreleasepool { NSMutableDictionary *a = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"xiaoming", @"one", @"xiaohong", @"two", @"xiaoqiang", @"three", nil]; //根據字典a裏面的key@"one", 刪除相對應的value值,等於刪除這個元素 [a removeObjectForKey:@"one"]; NSLog(@"%@", a); } return 0; }
根據數組中的key,刪除字典中相對應的全部value(等於刪除這個元素)
int main(int argc, const char * argv[]) { @autoreleasepool { //根據數組中的key,刪除字典中相對應的value(也就是元素) //新建一個可變字典a NSMutableDictionary *a = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"xiaoming", @"one", @"xiaohong", @"two", @"xiaoqiang", @"three", @"xianggang", @"four", @"xiaoliu", @"five", nil]; //新建一個數組b,其中包含數組a裏面的key NSArray *b = [NSArray arrayWithObjects:@"one",@"three",@"five", nil]; //根據數組b裏面的key,刪除字典a中相對應的value(也就是元素) [a removeObjectsForKeys:b]; NSLog(@"%@", a); } return 0; }
刪除字典中全部的元素
int main(int argc, const char * argv[]) { @autoreleasepool { //刪除字典中全部的元素 //新建一個可變字典a NSMutableDictionary *a = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"xiaoming", @"one", @"xiaohong", @"two", @"xiaoqiang", @"three", @"xianggang", @"four", @"xiaoliu", @"five", nil]; //刪除字典中全部的元素 [a removeAllObjects]; NSLog(@"%@", a); } return 0; }