您的位置:首页 > 编程语言 > C语言/C++

黑马程序员———OC语言 NSDictionary和 NSMutableDictionary的介绍

2015-11-02 16:36 316 查看
------- Java培训、Android培训、iOS培训、.Net培训 、期待与您交流 --------

一  NSDictionary的介绍和代码创建

1.NSDictionary:通过一个key(键),就能找到对应的value(值)。 NSDictionary
是不可变的,一旦初始化完毕,里面的内容就无法更改。NSDictionary
以%@格式打印字典,控制台里面大括号{}里面就是字典内容,二数组则是小括号()里面的内容。
 
2.注意:创建多组字典里的value和 key都必须是对象,只能写成@"key1",不能写成整型1等。
3.代码实现
#import <Foundation/Foundation.h>
int main(int
argc, const
char * argv[]) {
    @autoreleasepool {
      //1 创建空字典
        NSDictionary *arr=[NSDictionary
dictionary];
        
        //2 创建只有一组键值对的字典
        NSDictionary *arr2=[NSDictionary
dictionaryWithObject:@"zhangshan"
forKey:@"zs"];
        
        NSLog(@"%@",arr2);
        
        //3创建只有多组键值对的字典@"value"值在前,@"key"值在后。
        
        NSDictionary *arr3=[NSDictionary
dictionaryWithObjectsAndKeys:@"value1",@"key1",
@"value2",@"key2",nil];
        
        NSLog(@"%@",arr3);
        
         //4
快速创建字典
格式:NSDictionary *arr4={key值:value值,key值:value值....};
        //key值不能重复,如果重复了,虽然不会报错,但是最后重复的内容将不会被保存到字典中。
        NSDictionary *arr4=@{@"zs":@"zhangshan",@"ls":@"lisi"};
        NSLog(@"%@",arr4);
        
        //5 获取字典的长度.count
        NSLog(@"%ld",arr4.count);
        
        //6 根据key值取出value值
        
        NSString *str=[arr4
objectForKey:@"ls"];
        NSLog(@"%@",str);
                
        //7 字典的遍历(如果使用for循环只能默认的获取key值)
        for (NSString *key
in arr4) {
            
            NSLog(@"key--->%@,value--->%@",key,[arr4
objectForKey:key]);
        }
        
        [arr4 enumerateKeysAndObjectsUsingBlock:^(id key,
id obj, BOOL *stop) {
            
            NSLog(@"%@=%@",key,obj);
        }];
        
    }
    return
0;
}

二  NSDictionary的简写及写入文件

#import
<Foundation/Foundation.h>
void test(){
    //1
用简写形式定义一个字典
    NSDictionary *arr=@{@"zbz":@"zhangbozhi",@"cgx":@"chengguanxi"};
    
    //2 用简写形式获取key对应的value的值
    NSLog(@"%@",arr[@"zbz"]);
    
    //3 把字典保存到.plist文件中去
    
    BOOL isWrite = [arr
writeToFile:@"/Users/benqingsong/Desktop/arr.plist"
atomically:YES];
    
    if (isWrite) {
        NSLog(@"写入成功!");
    }//打印出得结果的确是写入成功,说明已经写入.plist文件中
    
    //4 从.plist文件中去读取字典
    NSDictionary *readArr=[NSDictionary
dictionaryWithContentsOfFile:@"/Users/benqingsong/Desktop/arr.plist"];
    
    NSLog(@"%@",readArr);
   }
int main(int argc,
const char * argv[]) {
    @autoreleasepool {
        
//       // 省

//        // 先定义一个市的数组
//        NSArray *lnarr=[NSArray arrayWithObjects:@"shengyang",@"dalian", nil];
//        NSArray *hbarr=[NSArray arrayWithObjects:@"baoding",@"shijiazhuang", nil];
//        
//        //再定义一个省对应市的字典
//        NSDictionary *citys=[NSDictionary dictionaryWithObjectsAndKeys:lnarr,@"ln",hbarr,@"hb", nil];
//        NSLog(@"citys=%@",citys);
//        //再把字典写入到文件中才是王道!!!
//        
//        BOOL iswrite=[citys writeToFile:@"/Users/benqingsong/Desktop/citys.plist" atomically:YES];
//        
//        if (iswrite) {
//            NSLog(@"写入成功!");
//        }
        
        //读取citys.plist文件中的内容
        
        NSDictionary *citysdict=[NSDictionary
dictionaryWithContentsOfFile:@"/Users/benqingsong/Desktop/citys.plist"];
        
        [citysdict enumerateKeysAndObjectsUsingBlock:^(id key,
id obj, BOOL *stop) {
            //NSLog(@"key-->%@,value-->%@",key,obj);
        
        //如果要打印出所有的城市
        for (NSString *str
in obj) {
            NSLog(@"city=%@",str);
        }
        
        }];
        
        // 获取每个数组
        
        NSArray *arr= citysdict[@"ln"];
        NSLog(@"%@",[arr
lastObject]);
      
    }
    return
0;
}

三 NSMutableDictionary代码的创建

 NSMutableDictionary:是NSDictionary的子类。NSMutableDictionary
是可变的,随时可以往里面添加更改删除元素。
 
注意:NSArray是有序的,是通过下标访问的。
            NSDictionary是无序的,通过key值访问元素。
 
#import <Foundation/Foundation.h>
int main(int
argc, const
char * argv[]) {
    @autoreleasepool {
        
    //1 创建一个可变的空字典
        NSMutableDictionary *dict=[NSMutableDictionary
dictionary];
    
    //2 给可变字典添加键对值
        [dict setObject:@"liuneng"
forKey:@"ln"];
        [dict setObject:@"zhaosi"
forKey:@"zs"];
    
        NSLog(@"%@",dict);
        
     //3 删除
//        [dict removeObjectForKey:@"zs"];
//         NSLog(@"%@",dict);
//        
//         // 全部删除
//        [dict removeAllObjects];
//         NSLog(@"%@",dict);
//        
    //4 修改
        [dict setObject:@"wanglaowu"
forKey:@"zs"];
         NSLog(@"%@",dict);
        
        //简化修改
        dict[@"ln"]=@"vvvvvv";
         NSLog(@"%@",dict);

      //5 查找 allKeys:获取所有key的值
       NSArray *arr= [dict
allKeys];
        if([arr
containsObject:@"zs"]){
        NSLog(@"存在这个zs这个key");
        
        }
        
    }
    return
0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: