Foundation框架 - NSDictionary类、NSMutableDictionary类

NSArray、NSSet、NSDictionary

/*
 集合
 1.NSArray\NSMutableArray
 * 有序
 * 高速创建(不可变):@[obj1, obj2, obj3]
 * 高速訪问元素:数组名[i]

 2.NSSet\NSMutableSet
 * 无序

 3.NSDictionary\NSMutableDictionary
 * 无序
 * 高速创建(不可变):@{key1 : value1,  key2 : value2}
 * 高速訪问元素:字典名[key]
 */

字典创建

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        NSLog(@"**************************  ******************************");

        //方式一:
         NSDictionary *dict = [NSDictionary dictionaryWithObject:@"jack" forKey:@"name"];

        //方式二:
         NSArray *keys = @[@"name", @"address"];
         NSArray *objects = @[@"jack", @"BeiJing"];
         NSDictionary *dict2 = [NSDictionary dictionaryWithObjects:objects forKeys:keys];
         NSLog(@"集合二结果为:%@",dict2);

        //方式三:值健对
         NSDictionary *dict3 = [NSDictionary dictionaryWithObjectsAndKeys:
         @"jack", @"name",
         @"BeiJing", @"address",
         @"88888888", @"qq", nil];
         NSLog(@"集合三结果为:%@",dict3);

字典高速初始化

        NSLog(@"************************ 字典高速初始化 **************************");

        //健值对
        NSDictionary *dict5 = @{@"name" : @"jack", @"address" : @"Beijing"};
        id obj = dict5[@"name"];
        NSLog(@"%@", obj);

        // 返回的是键值对的个数
        NSLog(@"%ld", dict5.count);

字典创建实例

        NSLog(@"************************ 字典创建实例 ****************************");

        //界面语言,程序窗口标题,确定按钮文字,提示输入
        NSArray* values=[NSArray arrayWithObjects:@"欢迎登录",@"登录",@"请输入username:", nil];
        NSArray* keys1=[NSArray arrayWithObjects:@"window_title",
                        @"confirm_button",@"input_hint", nil];
        NSDictionary* dict4=[NSDictionary dictionaryWithObjects:values forKeys:keys1];
        NSLog(@"count:%lu",dict.count);

        //NSEnumerator能够使用for-each循环高速进行迭代
        NSEnumerator*keyEnums=[dict4 keyEnumerator];
        int i=0;
        for (NSString* key in keyEnums) {
            NSLog(@"key%d:%@",i++,key);
        }
        NSLog(@"window_title=%@",[dict4 objectForKey:@"window_title"]);
        NSLog(@"confirm_button=%@",[dict4 objectForKey:@"confirm_button"]);
        NSLog(@"input_hint=%@",[dict4 objectForKey:@"input_hint"]);

可变字典

        NSLog(@"*************************** 可变字典 *****************************");

        NSMutableDictionary *dict6 = [NSMutableDictionary dictionary];
        // 加入值健对
        [dict6 setObject:@"jack" forKey:@"name"];
        [dict6 setObject:@"BeiJing" forKey:@"address"];
        [dict6 setObject:@"1206293008" forKey:@"QQ"];
        [dict6 setObject:@"male" forKey:@"sex"];
        [dict6 setObject:@"programming" forKey:@"hobby"];
         NSLog(@"%@", dict6);
        // 移除值健对
         [dict6 removeObjectForKey:@"address"];

        //输出姓名
         NSString *str = dict6[@"name"];
         NSLog(@"%@", str);

字典遍历

          NSLog(@"************************** 字典遍历 ******************************");

        // 方式一:字典是无序的
         NSDictionary *dict7 = @{
                               @"address" : @"北京",
                               @"name" : @"jack",
                               @"qq" : @"88888888"};

            NSArray *keys2 = [dict7 allKeys];
            for (int i = 0; i<dict7.count; i++)
            {
                NSString *key = keys2[i];
                NSString *object = dict7[key];
                NSLog(@"%@ ~~~~~~~ %@", key, object);
            }

        //方式二:block遍历
        [dict7 enumerateKeysAndObjectsUsingBlock:
         ^(id key, id obj, BOOL *stop) {
             NSLog(@"%@ ---- %@", key, obj);

         }];

字典需求排序

        NSLog(@"************************* 字典需求排序 ****************************");

        NSMutableDictionary* givenName=[NSMutableDictionary dictionaryWithObjectsAndKeys:
                                        [NSNumber numberWithInt:4],@"王", nil];
        [givenName setObject:[NSNumber numberWithInt:8] forKey:@"周"];
        [givenName setObject:[NSNumber numberWithInt:6] forKey:@"李"];
        [givenName setObject:[NSNumber numberWithInt:9] forKey:@"赵"];

        //keySortedByValueUsingSelector
        //由于value是NSNumber类型。全部能够使用compare:进行比較
        NSArray* keysOfName=[givenName keysSortedByValueUsingSelector:@selector(compare:)];
        for (NSString* key in keysOfName) {
            NSLog(@"key:%@",key);
        }
        //高速迭代(枚举)
        for (NSString * key in givenName) {
            NSNumber* value=[givenName valueForKey:key];
            NSLog(@"[%@]=%@",key,value);
        }

    }
    return 0;
时间: 2024-08-11 01:36:14

Foundation框架 - NSDictionary类、NSMutableDictionary类的相关文章

OC学习篇之---Foundation框架中的NSDirctionary类以及NSMutableDirctionary类

昨天学习了Foundation框架中NSArray类和NSMutableArray类:http://blog.csdn.net/jiangwei0910410003/article/details/41809719,今天来看一下Foundation框架中的NSDirctionary类,NSMutableDirctionary类,这个和Java中的Map类很想,OC中叫字典,Java中叫Map,还有字典是无序的,这个和NSArray不一样,Java中的Map也是无序的,通过hash值去检索元素的.

(转载)OC学习篇之---Foundation框架中的NSDirctionary类以及NSMutableDirctionary类

昨天学习了Foundation框架中NSArray类和NSMutableArray类,今天来看一下Foundation框架中的NSDirctionary类,NSMutableDirctionary类,这个和Java中的Map类很想,OC中叫字典,Java中叫Map,还有字典是无序的,这个和NSArray不一样,Java中的Map也是无序的,通过hash值去检索元素的. 一.NSDirctionary类 1 // 2 // main.m 3 // 19_NSDictionary 4 // 5 //

iOS Foundation 框架中 Mutable 的类们

太阳火神的美丽人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致"创作公用协议 转载请保留此句:太阳火神的美丽人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS.Android.Html5.Arduino.pcDuino,否则,出自本博客的文章拒绝转载或再转载,谢谢合作. Mutable 对于那些不能直接对其中内容进行更改的类来说,是一种扩展方式,象数值这类的,不涉及到指针的,就没有 Mutable 子类,可能是因为

OC学习篇之---Foundation框架中的NSArray类和NSMutableArray类

在之前的一篇文章中介绍了Foundation框架中的NSString类和NSMutableString类: http://blog.csdn.net/jiangwei0910410003/article/details/41788223 今天我们继续来看一下Foundation框架中的NSArray类和NSMutableArray类,其实NSArray类和Java中的List差不多,算是一种数据结构,当然我们从这两个类可以看到,NSArray类是不可变的,NSMutableArray类是可变的.

(转载)OC学习篇之---Foundation框架中的其他类(NSNumber,NSDate,NSExcetion)

前一篇说到了Foundation框架中的NSDirctionary类,这一一篇来看一下Foundation的其他常用的类:NSNumber,NSDate,NSException. 注:其实按照Java中集合的思想,应该还有一个Set,是的,OC中有NSSet和NSMutableSet这两个类的,但是,这里我为什么不单独介绍了呢?因为他的操作和NSArray是非常相似的,只是他和NSArray有一个区别就是他不能放重复数据,而且他也是无序的.其他没什么了,所以就不单独介绍了,而且NSSet在后面的

(转载)OC学习篇之---Foundation框架中的NSArray类和NSMutableArray类

在之前的一篇文章中介绍了Foundation框架中的NSString类和NSMutableString类,今天我们继续来看一下Foundation框架中的NSArray类和NSMutableArray类,其实NSArray类和Java中的List差不多,算是一种数据结构,当然我们从这两个类可以看到,NSArray类是不可变的,NSMutableArray类是可变的. 下面就先来看一下NSArray类: 一.NSArray类 1 // 2 // main.m 3 // 16_NSArray 4 /

OC学习篇之---Foundation框架中的其他类(NSNumber,NSDate,NSExcetion)

1.NSNumber 这个类主要是用来封装基本类型的,说到这里,就不得不说一下了: OC中的集合是不允许存入基本类型的,所以NSNumber类就诞生了,需要将基本类型封装一下,然后存进去,这个类似于Java中的自动装箱和拆箱,Java中的集合其实也是不允许存入基本类型的,但是我们任然看可以那么操作,就是因为有自动装箱功能,如果你将Eclipse的JDK改成5.0之前的,你看看还能操作吗.. 注:那为什么基本类型不能存入到集合中呢? 原因是在操作集合的时候会操作集合元素中的方法,但是基本类型是没有

Foundation框架下的常用类(NSNumber, NSValue, NSDate,NSDateFormatter)

1.NSNumber 将基础数类型数据转成对象数据(比如int  float double BOOL  long等等) //通过NSNumber将基础数类型数据转成对象数据. NSNumber * intNumber = [[NSNumber alloc] initWithInt:50]; NSNumber * floatNumber = [NSNumber numberWithFloat:45.3]; //xcode4.6以后,可以采用如下写法 NSNumber * doubleNumber

黑马程序员--Foundation框架之--NSDirctionary类以及它的子类NSMutableDirctionary类

------IOS培训期待与您交流! ------- 今天来看一下Foundation框架中的NSDirctionary 类,NSMutableDirctionary类,OC中叫字典,字典是无序的,这个和NSArray不一样. 一.NSDirctionary类 1.创建方法 // 字典的创建 NSArray *array1 = [NSArray arrayWithObjects:@"zhangsan",@"zhangfei", nil nil]; NSArray *