OC05 字典/数组

//

//  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 = [[NSDictionary alloc] initWithObjectsAndKeys:@"jiMIng", @"name", @"M", @"gender", nil];

    NSLog(@"%@", dict);

    

    /* 结果:{

     gender = M;

     name = jiMIng;

     }*/

        

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

    // 创建出key值数组

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

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

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

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

    NSDictionary *dict1 = [[NSDictionary alloc] initWithObjects:valueArray forKeys:keyArray];

    NSLog(@"%@", dict1);

    

    

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

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

    NSLog(@"%@", dict2);

    

    

    

    

    

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

    NSMutableDictionary *mDict = [NSMutableDictionary dictionaryWithDictionary: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 = [mDict objectForKey:@"name"]; // 由于不知道所取的value是什么类型,所以使用id泛型,且使用%@输出

    NSLog(@"%@", value);

    

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

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

    NSLog(@"%@", mDict);

    

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

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

    [mDict setObject:@"0" forKey:@"age"];

    NSLog(@"%@", mDict);

    

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

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

    [mDict removeObjectForKey:@"age"];

    NSLog(@"%@", mDict);

    

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

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

    NSLog(@"%@", mDict);

    

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

    [mDict removeAllObjects];

    NSLog(@"%@", mDict);

    

    

    

        

#pragma mark -字典的遍历

    // 创造一个字典

    NSDictionary *dict0 = [NSDictionary dictionaryWithObjectsAndKeys:@"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 = [NSDictionary dictionaryWithObjectsAndKeys:@"yanTaArea", @"areaName", @"100000", @"peopleCount"nil];

    NSLog(@"%@", yanTaArea);

    

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

    NSLog(@"%@", xinChengArea);

    

    

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

    //

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

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

    NSLog(@"%@", xiAnCity);

    

    

    

    

    // 定义一个渭南city

    NSDictionary *weiNanCity = [NSDictionary dictionary];

   

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

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

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

     // 创建省份字典

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

    NSLog(@"%@", provinceDict);

    

    

    

    

    

    

    

    

    

    

    

    

    

    

    

    

    

    

        

        

        

        

        

        

        

    return 0;

}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值