国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

IOS字典NSDictionary與NSMutableDictionary知識(shí)點(diǎn)

2019-11-14 18:40:30
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

 

字典中的元素是以鍵值對(duì)的形式存儲(chǔ)的,鍵值對(duì)的鍵和值,都是任意的對(duì)象,但是鍵往往使用字符串,字典存儲(chǔ)對(duì)象的地址沒(méi)有順序,字典的遍歷分為:鍵的遍歷和值的遍歷,字典與數(shù)組的區(qū)別:數(shù)組講究順序,而字典可以快速幫助我們找到數(shù)據(jù),數(shù)據(jù)是我們的目的,鍵是我們的手段;其中NSMutableDictionary是NSDictionary的子類,所以其擁有NSDictionary所有的功能;主要是一些常見(jiàn)的操作,別外一些操作見(jiàn)其相應(yīng)的文檔,下面的代碼部分還運(yùn)用的第三方插件BlocksKit相結(jié)合;

a:NSDictionary是由鍵值對(duì)(key-value)組成的數(shù)據(jù)集合
b:鍵:可以是任何對(duì)象 (通常是NSString類型的對(duì)象),同時(shí)鍵必須是單值
c:值:可以是任何對(duì)象,不能為nil
d:常用方式:我們根據(jù)鍵來(lái)查找相應(yīng)值
e:字典有可變的和不可變的,可變的字典中可動(dòng)態(tài)的添加和刪除元素
f:和數(shù)組不同,字典是無(wú)序的

1:NSDictionary一些常見(jiàn)的操作

 

//創(chuàng)建詞典    NSDictionary *dictionary=[NSDictionary dictionaryWithObjectsAndKeys:@"wujy",@"name",@29,@"age",nil];    NSInteger Count=[dictionary count];    NSLog(@"詞典的個(gè)數(shù)為%ld",Count);        //得到詞典中的所有key    NSEnumerator *enumeratorkey=[dictionary keyEnumerator];    for (NSObject *obj in enumeratorkey) {        NSLog(@"key為:%@",obj);        NSLog(@"通過(guò)key找到value值為:%@",[dictionary objectForKey:obj]);    }        //得到詞典中的所有value值    NSEnumerator *enumeratorvalue=[dictionary objectEnumerator];    for (NSObject *obj in enumeratorvalue) {        NSLog(@"value為:%@",obj);    }        //簡(jiǎn)便的方式創(chuàng)建 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(@"對(duì)應(yīng)的value為:%@",obj);    }];        //過(guò)濾 只在第一個(gè)符合條件時(shí)就停止

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

 

2:NSMutableDictionary一些常見(jiàn)的操作

    //創(chuàng)建一個(gè)nsmutabledictionary    NSMutableDictionary *mutableDictionary=[NSMutableDictionary dictionaryWithCapacity:3];    [mutableDictionary setObject:@"wujy" forKey:@"name"];    [mutableDictionary setObject:@"VEVb.com/wujy" forKey:@"webName"];    [mutableDictionary setObject:@29 forKey:@"age"];        //得到詞典中的所有key    NSEnumerator *enumeratorkey=[mutableDictionary keyEnumerator];    for (NSObject *obj in enumeratorkey) {        NSLog(@"key為:%@",obj);        NSLog(@"通過(guò)key找到value值為:%@",[mutableDictionary objectForKey:obj]);    }        //刪除其中一個(gè)key    [mutableDictionary removeObjectForKey:@"name"];    NSLog(@"刪除name的key以后值:%@",mutableDictionary);        [mutableDictionary removeAllObjects];    NSLog(@"刪除所有以后,可變?cè)~典個(gè)數(shù)為%ld",[mutableDictionary count]);        //blocks    //過(guò)濾    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(@"過(guò)濾后的可變?cè)~典為(29,13)%@",newmutableDictionary);        //取反過(guò)濾    [newmutableDictionary bk_performReject:^BOOL(id key, id obj) {        BOOL select=[obj intValue]>20?YES:NO;        return select;    }];    NSLog(@"取反過(guò)濾的可變?cè)~典為(13)%@",newmutableDictionary);        //修改各個(gè)項(xiàng)的結(jié)果    [newmutableDictionary bk_performMap:^id(id key, id obj) {        return @([obj intValue]+1);    }];    NSLog(@"修改后的可變?cè)~典為(14)%@",newmutableDictionary);

 


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 屯门区| 色达县| 靖西县| 榆树市| 即墨市| 陇西县| 胶南市| 句容市| 宁阳县| 平昌县| 大城县| 通化市| 高密市| 诏安县| 土默特右旗| 防城港市| 林周县| 陆川县| 滁州市| 乐亭县| 崇文区| 红安县| 新宾| 扎赉特旗| 富民县| 鄂托克旗| 乌什县| 汾阳市| 宁都县| 嘉义县| 收藏| 湾仔区| 沾益县| 磐安县| 卓资县| 泾川县| 文安县| 喀喇沁旗| 句容市| 康乐县| 灌阳县|