OC05 字典/数组

来源:互联网 发布:nfc读卡软件 编辑:程序博客网 时间:2024/05/20 10:22

//

//  main.m

//  OC05 字典、集合、数组排序

//

//  Created by xalo on 15/10/30.

//  Copyright (c) 2015 康大亮. All rights reserved.

//


#import <Foundation/Foundation.h>


int main(int argc,const char * argv[]) {


#pragma mark -字典类

    

   /*

     1、字典就是关键字以及存储的数值的集合,字典在每个给定的关键字下存储一个数值。关键字称为key,数值称为value,合成键值对。因此字典就是管理多个键值对的集合。字典可以管理多个键值对。

     2key常常是NSString类型的字符串(也可用int类型的数),但是value必须是对象

     3、键值对在字典中是没有顺序的

     4、字典的key不能重复,否则在取值是,会产生歧义

     5、如果有大量数据或频繁查找信息时,使用字典效率较高

     */

    

    

    #pragma mark --创建一个不可变字典NSDictionary

    /* 1.这种方式创建的字典需要写一个value+一个key”这样的顺序添加键值对。

     * 2.向字典中添加键值对时,value可以为空,但是不能存在value没有key对应的情况。(也就是:key-value必须成对出现)。

     */

   NSDictionary *dict = [[NSDictionaryalloc] initWithObjectsAndKeys:@"jiMIng",@"name", @"M",@"gender", nil];

   NSLog(@"%@", dict);

    

    /* 结果:{

     gender = M;

     name = jiMIng;

     }*/

        

     #pragma mark --使用数组创建字典对象

    // 创建出key值数组

   NSArray *keyArray = [NSArrayarrayWithObjects:@"name",@"age", @"hobby",nil];

    //创建出value值数组,value值的数组元素必须和key数组元素一一对应

   NSArray *valueArray = [NSArrayarrayWithObjects:@"riTian",@"23", @"fuckSky",nil];

    //使用数组创建字典的方法创建字典对象

   NSDictionary *dict1 = [[NSDictionaryalloc] initWithObjects:valueArrayforKeys:keyArray];

   NSLog(@"%@", dict1);

    

    

    #pragma mark --使用一个已知的字典创建新字典

   NSDictionary *dict2 = [[NSDictionaryalloc] initWithDictionary:dict1];

   NSLog(@"%@", dict2);

    

    

    

    

    

    #pragma mark --创建一个可变字典

    NSMutableDictionary *mDict = [NSMutableDictionarydictionaryWithDictionary:dict2];

   NSLog(@"%@", mDict);

    

#pragma mark -字典的操作

    

    #pragma mark --获取所有的key值,返回值是数组类型

   NSArray *keyArray1 = [mDict allKeys];

   NSLog(@"%@", keyArray1);

    

    #pragma mark --获取所有的value值,返回值是数组类型

   NSArray *valueArray1 = [mDict allValues];

   NSLog(@"%@", valueArray1);

    

    #pragma mark --通过key值取value

    id value = [mDictobjectForKey:@"name"];// 由于不知道所取的value是什么类型,所以使用id泛型,且使用%@输出

   NSLog(@"%@", value);

    

    #pragma mark --给可变字典添加键值对方法

    [mDict setObject:@"HighNewArea"forKey:@"address"];

   NSLog(@"%@", mDict);

    

    #pragma mark --修改可变字典的value方法

    //修改可变字典的value和给字典添加新建值对的方法一样。如果key值以前没有,则该方法是删除方法,如果key值之前存在,则该方法是修改value方法

    [mDictsetObject:@"0"forKey:@"age"];

   NSLog(@"%@", mDict);

    

    #pragma mark --删除可变字典的键值对方法

    // 根据key值来删除key所对应的value

    [mDict removeObjectForKey:@"age"];

   NSLog(@"%@", mDict);

    

    //将若干个key封装在一个数组中,然后作为参数传入,删除方法会根据数组中的key是年初对应的value

    [mDict removeObjectsForKeys:[NSArrayarrayWithObjects:@"address",@"hobby", nil]];

   NSLog(@"%@", mDict);

    

    #pragma mark --删除可变字典中的全部value

    [mDict removeAllObjects];

   NSLog(@"%@", mDict);

    

    

    

        

#pragma mark -字典的遍历

    // 创造一个字典

    NSDictionary *dict0 = [NSDictionarydictionaryWithObjectsAndKeys:@"1",@"a", @"2",@"b", @"3",@"c", @"4",@"d", @"5",@"e", nil];

   NSLog(@"字典顺序%@", dict0);

    // 遍历

    // 1、获取到所有的key,并且拿到key的个数

//    NSArray *allKeys = [dict0 allKeys];// 【注意】使用allkeys方法取key值,并不是按照打印字典key-value的顺序取值的!

   NSArray *allKeys = dict0.allKeys;// .语法

   NSLog(@"所有的key%@", allKeys);

    // 2、使用for循环遍历字典

   for (int i =0; i < [allKeys count]; i++) {

        //2.1 获取到key

       NSString *key = [allKeys objectAtIndex:i];

        //2.2 根据获取到的key访问value

       NSString *value = [dict0 objectForKey:key];

        

       NSLog(@"key = %@, value = %@", key, value);

        

    }

    

    

    

    

    

    

    

    // lianxi:使用字典表示一个城市的区,区名和人口数

    NSDictionary *yanTaArea = [NSDictionarydictionaryWithObjectsAndKeys:@"yanTaArea",@"areaName", @"100000",@"peopleCount"nil];

   NSLog(@"%@", yanTaArea);

    

    NSDictionary *xinChengArea = [NSDictionarydictionaryWithObjectsAndKeys:@"xinChengArea",@"areaName", @"200000",@"peopleCount", nil];

   NSLog(@"%@", xinChengArea);

    

    

    //用字典表示一个城市:城市名和所有的市区

   //

   NSArray *arrayCity = [NSArrayarrayWithObjects:yanTaArea, xinChengArea, nil];

   NSDictionary *xiAnCity = [NSDictionarydictionaryWithObjectsAndKeys:arrayCity, @"xiAnCity", nil];

   NSLog(@"%@", xiAnCity);

    

    

    

    

    // 定义一个渭南city

    NSDictionary *weiNanCity = [NSDictionarydictionary];

   

    //使用字典表示一个省:省的名称和所有的城市

     //将两个城市字典作为数组元素存进数组元素里

   NSArray *cityArray = [NSArrayarrayWithObjects:xiAnCity, weiNanCity ,nil];

     // 创建省份字典

   NSDictionary *provinceDict = [NSDictionarydictionaryWithObjectsAndKeys:@"shanXi",@"provinceName",cityArray,@"cityName",nil];

   NSLog(@"%@", provinceDict);

    

    

    

    

    

    

    

    

    

    

    

    

    

    

    

    

    

    

        

        

        

        

        

        

        

   return 0;

}


0 0