IOS字典NSDictionary與NSMutableDictionary知識點,iosnsdictionary

來源:互聯網
上載者:User

IOS字典NSDictionary與NSMutableDictionary知識點,iosnsdictionary

 

字典中的元素是以索引值對的形式儲存的,索引值對的鍵和值,都是任意的對象,但是鍵往往使用字串,字典儲存物件的地址沒有順序,字典的遍曆分為:鍵的遍曆和值的遍曆,字典與數組的區別:數組講究順序,而字典可以快速協助我們找到資料,資料是我們的目的,鍵是我們的手段;其中NSMutableDictionary是NSDictionary的子類,所以其擁有NSDictionary所有的功能;主要是一些常見的操作,別外一些操作見其相應的文檔,下面的代碼部分還運用的第三方外掛程式BlocksKit相結合;

a:NSDictionary是由索引值對(key-value)組成的資料集合
b:鍵:可以是任何對象 (通常是NSString類型的對象),同時鍵必須是單值
c:值:可以是任何對象,不能為nil
d:常用方式:我們根據鍵來尋找相應值
e:字典有可變的和不可變的,可變的字典中可動態添加和刪除元素
f:和數組不同,字典是無序的

1:NSDictionary一些常見的操作

 

//建立詞典    NSDictionary *dictionary=[NSDictionary dictionaryWithObjectsAndKeys:@"wujy",@"name",@29,@"age",nil];    NSInteger Count=[dictionary count];    NSLog(@"詞典的個數為%ld",Count);        //得到詞典中的所有key    NSEnumerator *enumeratorkey=[dictionary keyEnumerator];    for (NSObject *obj in enumeratorkey) {        NSLog(@"key為:%@",obj);        NSLog(@"通過key找到value值為:%@",[dictionary objectForKey:obj]);    }        //得到詞典中的所有value值    NSEnumerator *enumeratorvalue=[dictionary objectEnumerator];    for (NSObject *obj in enumeratorvalue) {        NSLog(@"value為:%@",obj);    }        //簡便的方式建立 key排前面value排後面    NSDictionary *newDictionary=@{@"name":@"wujy",@"age":@29};    NSArray *keyArray=[newDictionary allKeys];    for (NSObject *obj in keyArray) {        NSLog(@"key的值為:%@",obj);    }        NSArray *valueArray=[newDictionary allValues];    for (NSObject *obj in valueArray) {        NSLog(@"value的值為:%@",obj);    }        //blocks外掛程式    NSDictionary *blockDictionary=[NSDictionary dictionaryWithObjects:[[NSArray alloc] initWithObjects:@3,@15,@29,nil] forKeys:[[NSArray alloc] initWithObjects:@"IOS",@"work",@"age",nil]];    //遍曆    [blockDictionary bk_each:^(id key, id obj) {        NSLog(@"使用blocks的key為:%@",key);        NSLog(@"對應的value為:%@",obj);    }];        //過濾 只在第一個符合條件時就停止

NSDictionary *matchDictionary=[blockDictionary bk_match:^BOOL(id key, id obj) {
        BOOL select=[obj intValue]<10?YES:NO;        return select;    }];    NSLog(@"match符合的項為:%@",matchDictionary);        //過濾    NSDictionary *selectDictionary=[blockDictionary bk_select:^BOOL(id key, id obj) {        BOOL select=[obj intValue]>10?YES:NO;        return select;    }];    NSLog(@"select符合的項為%@",selectDictionary);        //反向過濾    NSDictionary *rejectDictionary=[blockDictionary bk_reject:^BOOL(id key, id obj) {        BOOL select=[obj intValue]>10?YES:NO;        return select;    }];    NSLog(@"reject符合的項為%@",rejectDictionary);        //對各個項進行修改    NSDictionary *mapDictinary=[blockDictionary bk_map:^id(id key, id obj) {        return [NSNumber numberWithInt:[obj intValue]+1];    }];    NSLog(@"map修改後的項為%@",mapDictinary);        //是否符合條件 返回bool    BOOL isSelected=[blockDictionary bk_any:^BOOL(id key, id obj) {        BOOL select=[obj intValue]>20?YES:NO;        return select;    }];    NSLog(@"%d符合條件",isSelected);        //判斷是否所有的項都符合這個條件    BOOL allSelected=[blockDictionary bk_all:^BOOL(id key, id obj) {        BOOL select=[obj intValue]>20?YES:NO;        return select;    }];    NSLog(@"%d符合條件",allSelected);        //判斷是否所有的項都不符合這個條件    BOOL noneSelected=[blockDictionary bk_none:^BOOL(id key, id obj) {        BOOL select=[obj intValue]>50?YES:NO;        return select;    }];    NSLog(@"%d符合條件",noneSelected);

 

2:NSMutableDictionary一些常見的操作

    //建立一個nsmutabledictionary    NSMutableDictionary *mutableDictionary=[NSMutableDictionary dictionaryWithCapacity:3];    [mutableDictionary setObject:@"wujy" forKey:@"name"];    [mutableDictionary setObject:@"cnblogs.com/wujy" forKey:@"webName"];    [mutableDictionary setObject:@29 forKey:@"age"];        //得到詞典中的所有key    NSEnumerator *enumeratorkey=[mutableDictionary keyEnumerator];    for (NSObject *obj in enumeratorkey) {        NSLog(@"key為:%@",obj);        NSLog(@"通過key找到value值為:%@",[mutableDictionary objectForKey:obj]);    }        //刪除其中一個key    [mutableDictionary removeObjectForKey:@"name"];    NSLog(@"刪除name的key以後值:%@",mutableDictionary);        [mutableDictionary removeAllObjects];    NSLog(@"刪除所有以後,可變詞典個數為%ld",[mutableDictionary count]);        //blocks    //過濾    NSMutableDictionary *newmutableDictionary=[NSMutableDictionary dictionaryWithDictionary:@{@"IOS":@3,@"work":@13,@"age":@29}];    [newmutableDictionary bk_performSelect:^BOOL(id key, id obj) {        BOOL select=[obj intValue]>10?YES:NO;        return select;    }];    NSLog(@"過濾後的可變詞典為(29,13)%@",newmutableDictionary);        //取反過濾    [newmutableDictionary bk_performReject:^BOOL(id key, id obj) {        BOOL select=[obj intValue]>20?YES:NO;        return select;    }];    NSLog(@"取反過濾的可變詞典為(13)%@",newmutableDictionary);        //修改各個項的結果    [newmutableDictionary bk_performMap:^id(id key, id obj) {        return @([obj intValue]+1);    }];    NSLog(@"修改後的可變詞典為(14)%@",newmutableDictionary);

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.