多语言展示
当前在线:287今日阅读:155今日分享:35

ios开发----NSDictionary(字典)

字典的元素 是任意的对象地址类型    1. 元素 是键值对   key - value 必须一一对应 成对出现    2.最后 nil 作为结束     3.字典内容 是无序的 跟存放顺序无关     4.key是唯一 的不能重复    但是 不同的key 可以对应相同的值     5. key通常写成 NSString *=====格式:       健(key)  :  值(value)
工具/原料
1

Mac / Mac mini

2

Xcode

方法/步骤
1

一、字典的创建//1.实例化一个字典对象//      健(key)  :  值(value)NSDictionary *dictt = [[NSDictionary alloc] initWithObjectsAndKeys:@"1",@"one",@"2",@"two",@"3",@"three",@"2015-4-23",@"today",@"xiaohong",@"name",@"2015-4-23",@"date", nil];//2.用一个字典实例化另外一个字典    NSDictionary *dict5 = [[NSDictionary alloc] initWithDictionary:dictt];

2

//3.类方法实例化对象    NSDictionary *dict6 = [NSDictionary dictionaryWithObjectsAndKeys:@"1",@"one",@"2",@"two",@"3",@"three", nil];    NSLog(@"dict3:%@",dict6);        NSDictionary *dict7 = [NSDictionary dictionaryWithDictionary:dict3];    NSLog(@"dict4:%@",dict7);

3

//4.用两个数组 实例化一个字典 两个数组 元素要一一对应    //==放健    NSArray *keysArr = [[NSArray alloc] initWithObjects:@"one",@"two", nil];    //==放值    NSArray *valuesArr = [[NSArray alloc] initWithObjects:@"1",@"2", nil];        NSDictionary *dict8 = [NSDictionary dictionaryWithObjects:valuesArr forKeys:keysArr];    NSLog(@"dict5:%@",dict8);

4

【注意】---扩展//获取字典 所有的key-----allKeys (数组  NSArray*)NSArray *allKeysArr = [dict2 allKeys];NSLog(@"%@",allKeysArr);//获取字典 所有的Value----allValues (数组 NSArray*)NSArray *allValuesArr = [dict2 allValues];NSLog(@"%@",allValuesArr);

5

二、====字典的常用类型====//1.=====字典中的 值为“字符串”    NSDictionary *dict1 = @{@"1":@"一",@"2":@"二",@"3":@"三"};    //2.====字典中的 值为“数字”    NSDictionary *dict2 = @{@"一":@1,@"二":@2,@"三":@3};    //3.====字典中的 值为“数组”    NSDictionary *dict3 = @{@"A":@[@"a",@"b",@"c"],@"B":@[@"d",@"e",@"f"],@"C":@[@"g",@"h",@"i"]};    //4.=====字典中的 值为"字典"    NSDictionary *dict4 = @{@"A":@{@"1":@"一",@"2":@"二"},@"B":@{@"1":@"一",@"2":@"二"},@"C":@{@"1":@"一",@"2":@"二"}};    NSLog(@"%@",dict4);        //5.=========bool 存入字典( 值为bool)【注意】bool值存入字典时,需要转为(NSNumber *)类型    BOOL bol = YES;    NSNumber *numb = [NSNumber numberWithBool:bol];    NSDictionary *dict = @{@"ifOpen":numb};    NSLog(@"%@",dict);    //【重点】从字典读取bool值    BOOL bol1 = [[dict objectForKey:@"ifOpen"] boolValue];    NSLog(@"%d",bol1);

6

三、NSDictionary的遍历方法1    ===快速遍历   NSDictionary *dict = @{@"name":@"lnj", @"phone":@"12345678", @"address":@"天朝"};   for (NSString *key in dict) {                NSLog(@"key = %@, value = %@", key, dict[key]);    }方法二   ===Block遍历[dict enumerateKeysAndObjectsUsingBlock:^(NSString *key, NSString *obj, BOOL *stop) {               NSLog(@"key = %@, value = %@", key, obj);    }];

7

四、NSDictionary文件操作---将字典写入文件中- (BOOL)writeToFile:(NSString *)path atomically:(BOOL)useAuxiliaryFile;- (BOOL)writeToURL:(NSURL *)url atomically:(BOOL)atomically;存结果是xml文件格式,但苹果官方推荐为plist后缀======存入====NSDictionary *dict = @{@"name":@"lnj", @"phone":@"12345678", @"address":@"天朝"};    //是否存入BOOL flag = [dict writeToFile:@"/Users/LNJ/Desktop/dict.plist" atomically:YES];    NSLog(@"flag = %i", flag);=====从文读取====NSDictionary *newDict = [NSDictionary dictionaryWithContentsOfFile:@"/Users/LNJ/Desktop/dict.plist"];    NSLog(@"newDict = %@", newDict);

8

五、NSDictionary 与  Json字符串的相互转化//1. ===字典转Json字符串    NSDictionary *dict10 = @{@"A":@{@"1":@"一",@"2":@"二"},@"B":@{@"1":@"一",@"2":@"二"},@"C":@{@"1":@"一",@"2":@"二"}};    NSString *jsonString = [self convertToJSONData:dict10];    NSLog(@"json类型字符串: %@",jsonString);代码如下://1. 字典转Json字符串- (NSString*)convertToJSONData:(id)infoDict{    NSError *error;    NSData *jsonData = [NSJSONSerialization dataWithJSONObject:infoDict                                                       options:NSJSONWritingPrettyPrinted                                                          error:&error];    NSString *jsonString = @"";    if (! jsonData){        NSLog(@"Got an error: %@", error);    }else{        jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];    }    //去除掉首尾的空白字符和换行字符    jsonString = [jsonString stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];    [jsonString stringByReplacingOccurrencesOfString:@"\n" withString:@""];    return jsonString;}

9

//2.========JSON字符串转化为字典    NSDictionary *d =[NSDictionary dictionaryWithDictionary:[self dictionaryWithJsonString:jsonString]];    NSLog(@"字典:%@",d);代码如下://JSON字符串转化为字典- (NSDictionary *)dictionaryWithJsonString:(NSString *)jsonString{    if (jsonString == nil) {        return nil;    }    NSData *jsonData = [jsonString dataUsingEncoding:NSUTF8StringEncoding];  //转为二进制    NSError *err;    NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:jsonData                                                        options:NSJSONReadingMutableContainers                                                          error:&err];    if(err){        NSLog(@"json解析失败:%@",err);        return nil;    }    return dic;}

推荐信息