zoukankan      html  css  js  c++  java
  • OC中Foundation框架之NSDictionary、NSMutableDictionary

    NSDictionary概述

    NSDictionary的作用类似:通过一个key ,就能找到对应的value
    同样 NSDictionary是不可变的,一旦初始化完毕,里面的内容就无法修改

    NSDictionary创建

     1  +(instancetype) dictionary;
     2  +(instancetype)dictionaryWithObject:(id) object forKey:(id<NSCopying>)key;//objectForKey,根据键取值
     3  +(instancetype)dictionaryWithObjectsAndKeys:(id)firstObject,...;
     4  
     5  例:
     6     先值,后key 自动组成一对,另外类似java的map 存入后的数据时无序的
     7      [NSDictionary dictionaryWithObjectAndKeys:@"张三",@"zs",@"李四",@"ls",nil];
     8 
     9     快速创建字典
    10     NSDictionary *dictator =@{@"zs":@"zhangsan",@"ls":@"lisi",@"ww":@"wangwu"};
    11 
    12     注意:key值不能重复,在java中key重复时,会覆盖value,而oc中key重复则不会存入;

    NSDictionary的基本使用

    1 //返回字典的键值对数目
    2 -(NSUInteger)count;
    3 //根据key取出value
    4 -(id)objectForKey:(id)aKey;

    NSDictionary的遍历

     1 使用增强型for循环
     2 for(NSString *str in NSDictionary){
     3           NSString *ss =[ dic objectForKey:str]
     4           NSLog(@"%@ --->%@",str,ss);  
     5 }
     6 
     7 使用block进行遍历
     8 [ns enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) {
     9            NSLog(@"%@---->%@",key,id);
    10         }]

    NSDictionary的文件操作

     1 将NSDictionary写入文件中
     2 -(BOOL)writeToFile:(NSString *)path atomically:(BOOL) useAuxiliaryFile ;
     3 -(BOOL) writeToURL:(NSURL *)url atomically:(BOOL) atomically;
     4 
     5 例:
     6     //写入文件    
     7     NSDictionary *dictator=@{@"zs":@"zhangsan",@"ls":@"lisi",@ww":@wanggu"};
     8 
     9     [dict3 writeToFile:@"/Users/liwei/Desktop/dict.plist" atomically:YES];
    10 
    11    //读取文件
    12    NSDictionary *dict4=[NSDictionary dictionaryWithContentsOfFile:@"/Users/liwei/Desktop/dict.plist"] 

    NSMutableDictionary概述

    1 什么是NSMutableDictionary
    2 NSMutableDictionary 是NSDictionary得子类
    3 NSDictionary是不可变的,一旦初始化完毕后,它里面的内容就永远是固定的,不能删除里面的元素,也不能再往里面添加元素
    4 NSMutableDictionary 是可变的,可以随时往里面添加、更改、删除元素

    NSMutableDictionary常用方法

    1 添加一个键值对(会把aKey之前对应的值给替换掉)
    2 -(void)setObject :(id) anObject forKey:(id <NSCopying>)aKey;
    3 通过aKey删除对应的value
    4 -(void)removeObjectForKey:(id)aKey;
    5 通过aKey删除对应的value
    6 -(void)removeAllObjects;
    7 删除所有的键值对

    NSMutableDictionary简写形式

    1 NSMutableDictionary *dict =[NSMutableDictionary dictionary];
    2 //快速创建字典
    3 dict.dictionary = @{@"name":@"bbb",@"age":@"18"};
    4 //添加值到Dicitonary中
    5 [dict setObject:@"man" forKey:@"sex"];
    6 //查看字典内容
    7 NSLog(@"%@",dict);

    NSDictionary与NSArray对比

     1 区别:
     2     1)NSArray是有序的,NSDictionary是无序的
     3     2)NSArray是通过下标访问元素,NSDictionary是通过key访问元素
     4 
     5 NSArray的用法
     6     1)创建
     7     @[@"java",@"rose"](返回是不可变数组)
     8     2)访问
     9     id d =array[1];
    10     3)赋值
    11     array[1]=@"jack";
    12    
    13 NSDictionary的用法
    14     1)创建
    15     @{@"name";@"jack",@"phone":@"10086"}(返回是不可变字典)
    16     2)访问
    17     id d =dict[@"name"];
    18     3)赋值
    19     dict[@"name"]=@"jack";
  • 相关阅读:
    MySQL补充
    不同操作系统下虚拟环境的搭建
    Python导学基础(二)变量与基础数据类型
    Python导学基础(一)介绍
    KM 算法
    题解-CF1065E Side Transmutations
    题解-CF1140E Palindrome-less Arrays
    题解-CF677D Vanya and Treasure
    splay文艺平衡树
    splay区间操作(bzoj1500)
  • 原文地址:https://www.cnblogs.com/developer-wang/p/4508199.html
Copyright © 2011-2022 走看看