天天看點

Foundation架構--NSDictionary的使用

一、NSDictionary介紹

1、NSDictionary的介紹

NSDictionary翻譯過來叫做”字典”

日常生活中, “字典”的作用: 通過一個拼音或者漢字, 就能找到對應的詳細解釋。

NSDictionary的作用類似: 通過一個key(鍵), 就能找到對應的value(值) NSDictionary是不可變的, 一旦初始化完畢, 裡面的内容就無法修改。

2、NSDictionary的建立

1)建立空字典

NSDictionary *d1 = [NSDictionary dictionary];

NSLog(@"d1 = %@",d1);
           

列印結果:

d1 = {

}

2)建立隻有一組鍵值對的字典

NSDictionary *d2 = [NSDictionary dictionaryWithObject:@"jiaozuo" forKey:@"H"];

NSLog(@"d2 = %@",d2);
           

列印結果:

d2 = {

H = jiaozuo;

}

3)建立多組鍵值對的字典

NSDictionary *d3 = [NSDictionary dictionaryWithObjectsAndKeys:@"jiaozuo",@"H",@"zhengzhou",@"A",@"luoyang",@"C", nil];

NSLog(@"d3 = %@",d3);
           

列印結果:

d3 = {

A = zhengzhou;

C = luoyang;

H = jiaozuo;

}

4)快速建立一個字典@{key值:value值}

NSDictionary *d4 = @{
                             @"S":@"dazhou",@"A":@"chengdu"
                    };

NSLog(@"d4 = %@",d4);
           

列印結果:

d4 = {

A = chengdu;

S = dazhou;

}

3、鍵值對集合的特點

1)字典存儲的時候,必須是”鍵值對”的方式來存儲(同時鍵不要重複)

2) 鍵值對中存儲的資料是”無序的”.

3) 鍵值對集合可以根據鍵, 快速擷取資料.

二、NSDictionary基本使用方法

1、擷取字典長度

NSLog(@"d4.count = %lu",d4.count);
           

列印結果:

d4.count = 2

2、根據key值取出value值

NSString *str1 = [d4 valueForKey:@"A"];
NSString *str2 = [d4 objectForKey:@"A"];

NSLog(@"str1 = %@",str1);
NSLog(@"str2 = %@",str2);
           

列印結果:

str1 = chengdu

str2 = chengdu

三、NSDictionary周遊方法

1、增強for循環方法

NSDictionary *d5 = @{
                             @"A":@"zhengzhou",@"C":@"luoyang",@"H":@"jiaozuo"
                             };
        //第一步:擷取所有的key
        //第二步:根據key擷取value值

        for (NSString *key in d5) {

            NSLog(@"key = %@,value = %@",key,[d5 valueForKey:key]);
        }
           

列印結果:

key = A,value = zhengzhou

key = C,value = luoyang

key = H,value = jiaozuo

2、block方法

[d5 enumerateKeysAndObjectsUsingBlock:^(id  _Nonnull key, id  _Nonnull obj, BOOL * _Nonnull stop) {

NSLog(@"key = %@,value = %@",key,obj);

        }];
           

列印結果:

key = A,value = zhengzhou

key = C,value = luoyang

key = H,value = jiaozuo

三、NSDictionary的檔案操作

1、把字典儲存到檔案中

//簡寫形式定義一個字典
NSDictionary *d1 = @{
                                 @"jz":@"jiaozuo",@"ly":@"luoyang",@"zz":@"zhengzhou"
                                 };

NSLog(@"d1 = %@",d1);

//簡寫形式擷取key對應的value值
NSLog(@"%@",d1[@"jz"]);

//把字典儲存到檔案中
if([d1 writeToFile:@"/Users/leikai/Desktop/d1.plist" atomically:YES]){

            NSLog(@"寫入成功");
            }else{
            NSLog(@"寫入失敗");
            }
           

列印結果:

d1 = {

jz = jiaozuo;

ly = luoyang;

zz = zhengzhou;

}

jiaozuo

寫入成功

寫入結果:

Foundation架構--NSDictionary的使用

2、從檔案中讀取字典

NSDictionary *d2 = [NSDictionary dictionaryWithContentsOfFile:@"/Users/leikai/Desktop/d1.plist"];

NSLog(@"d2 = %@",d2);
           

3、字典包含數組并讀寫操作

1)寫入操作

NSArray *hnArr = @[@"zhengzhou",@"luoyang",@"jiaozuo"];

NSArray *scArr = @[@"chengdu",@"dazhou"];

NSDictionary *d3 = @{
                                 @"hn":hnArr,@"sc":scArr
                                 };
if ([d3 writeToFile:@"/Users/leikai/Desktop/d3.plist" atomically:YES]) {
            NSLog(@"寫入成功");
            }else{
            NSLog(@"寫入失敗");
            }
           

列印結果:

寫入成功

寫入結果:

Foundation架構--NSDictionary的使用

2)讀取操作

NSDictionary *d5 = [NSDictionary dictionaryWithContentsOfFile:@"/Users/leikai/Desktop/d3.plist"];

NSLog(@"d5 = %@",d5);

//周遊
[d5 enumerateKeysAndObjectsUsingBlock:^(id  _Nonnull key, id  _Nonnull obj, BOOL * _Nonnull stop) {

//擷取每個元素
for (NSString *str in obj) {

               NSLog(@"%@",str);

                }
            }];

//擷取每個數組
NSArray *hnArr =  d5[@"hn"];
NSLog(@"hnArr = %@",hnArr);

NSArray *scArr = d5[@"sc"];
NSLog(@"scArr = %@",scArr);
           

列印結果:

d5 = {

hn = (

zhengzhou,

luoyang,

jiaozuo

);

sc = (

chengdu,

dazhou

);

}

zhengzhou

luoyang

jiaozuo

chengdu

dazhou

hnArr = (

zhengzhou,

luoyang,

jiaozuo

)

scArr = (

chengdu,

dazhou

)

繼續閱讀