NSMutableDictionary 和 NSDictionary的区别与用法大全

NSDictionary

初始化新字典,新字典包含otherDic

NSDictionary *dic = [NSDictionary dictionaryWithDictionary:otherDic];

以文件内容初始化字典

NSDictionary *dic = [NSDictionary dictionaryWithContentsOfFile:path];

       

NSArray *objects=[NSArray arrayWithObjects:@"v1",@"v2",@"v3", nil];

        NSArray *keys=[NSArray arrayWithObjects:@"k1",@"k2",@"k3", nil];

        dic=[NSDictionary dictionaryWithObjects:objects forKeys:keys];

//类方法

    NSDictionary *dictionary = [NSDictionary dictionaryWithObjectsAndKeys:@"沐风", @"name", @"呵呵", @"sex", @"金紫荆韩式松骨", @"address", @"呵呵", @"exo", nil];

    //对象方法

//    NSDictionary *dictionary = [[NSDictionary alloc]initWithObjectsAndKeys:@"沐风", @"name", @"呵呵", @"sex", @"金紫荆韩式松骨", @"address", nil];

    //现在常用以下方法

//    NSDictionary *dictionary = @{@"name":@"沐风", @"sex":@"呵呵", @"address":@"金紫荆韩式松骨",@"exo":@"呵呵"};    

    //创建空字典

//    NSDictionary *dictionaty = [NSDictionary dictionary];

    //得到词典的数量

    NSInteger count = [dictionary count];

    NSLog(@"词典的数量为: %ld",count);

        //根据key查value

        NSLog(@"%@", [dictionary objectForKey:@"name"]);

        NSLog(@"%@", dictionary [@"name"]);

        //根据value查询key

        NSLog(@"%@", [dictionary allKeysForObject:@"呵呵"]);

        

    //得到词典中所有KEY值

    NSEnumerator * enumeratorKey = [dictionary keyEnumerator];

    //快速枚举遍历所有KEY的值

    for (NSObject *object in enumeratorKey) {

        NSLog(@"遍历KEY的值: %@",object);

    }

    //得到词典中所有Key值

    NSLog(@"%@", dictionary.allKeys);//allkeys 属性

    

    //得到词典中所有Value值

    NSEnumerator * enumeratorValue = [dictionary objectEnumerator];

    //快速枚举遍历所有Value的值

    for (NSObject *object in enumeratorValue) {

        NSLog(@"遍历Value的值: %@",object);

    }

    //得到词典中所有Value值

    NSLog(@"%@", dictionary.allValues);

    //遍历词典中所有Value值

    for (NSString *key in dictionary.allKeys ) {

        NSLog(@"%@", [dictionary objectForKey:key]);

    }

  • Block遍历

   [dict enumerateKeysAndObjectsUsingBlock:^(NSString *key, NSString *obj, BOOL *stop) {
        NSLog(@"key = %@, value = %@", key, obj);
    }];
  • 键值对集合的特点
  1. 字典存储的时候,必须是"键值对"的方式来存储(同时键不要重复)
  2. 键值对中存储的数据是"无序的".
  3. 键值对集合可以根据键, 快速获取数据.

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);

NSMutableDictionary

初始化一个空的可变字典

NSMutableDictionary *dic2 = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"v1",@"key1",@"v2",@"key2",nil];

NSDictionary *dic3 = [NSDictionary dictionaryWithObject:@"v3" forKey:@"key3"];

向字典2对象中添加整个字典对象3

[dic2 addEntriesFromDictionary:dic3];

向字典2对象中最佳一个新的key3和value3

[dic2 setValue:@"value3" forKey:@"key3"];

初始化一个空的可变字典

NSMutableDictionary *dic1 = [NSMutableDictionary dictionary];

将空字典1对象内容设置与字典2对象相同

[dic1 setDictionary:dic2];

将字典中key1对应的值删除

[dic1 removeObjectForKey@"key1"];

NSArray *array = [NSArray arrayWithObjects:@"key1", nil];

根据指定的数组(key)移除字典1的内容

[dic2 removeObjectsForKeys:array];

移除字典所有对象

[dic1 removeAllObjects];

猜你喜欢

转载自blog.csdn.net/W2i0l1l5y/article/details/83444246
今日推荐