字典的练习和使用(遍历,搜索。。。)(Student和Book类文件可以查看上篇博客这次不上传了。)

//
// main.m
// NSDictionary
//
// Created by WildCat on 13-7-26.
// Copyright (c) 2013年 wildcat. All rights reserved.
// #pragma mark - NSDictionary练习 #import <Foundation/Foundation.h>
#import "Student.h"
#pragma mark 创建字典
void dictCreat(){
//第一种方式
NSDictionary *dict=[NSDictionary dictionaryWithObjectsAndKeys:
@"v1",@"k1",
@"v2",@"k2",
@"v3",@"k3",nil];
NSLog(@"The Dictionary is:%@",dict);
//第二种方式
NSArray *objects=[NSArray arrayWithObjects:@"v1",@"v2",@"v3",@"v4", nil];
NSArray *keys=[NSArray arrayWithObjects:@"k1",@"k2",@"k3",@"k4", nil];
dict=[NSDictionary dictionaryWithObjects:objects forKeys:keys];
NSLog(@"The Dictionary is:%@",dict);
} #pragma mark 字典的使用
void dictUser(){ //创建一个字典
NSDictionary *dict=[NSDictionary dictionaryWithObjectsAndKeys:
@"v1",@"k1",
@"v2",@"k2",
@"v3",@"k3",nil]; //由于NSDIctionary是不可变的,只能取值,不能修改值
id obj=[dict objectForKey:@"k2"];//查找值
NSLog(@"The obj is :%@",obj);
NSInteger count=[dict count];//获得个数
NSLog(@"Count :%zi",count); //将字典写入文件中
NSString *path=@"/Users/bird/Desktop/dict.xml";
[dict writeToFile:path atomically:YES];
//通过keys获得values
NSArray *objects=[dict objectsForKeys:[NSArray arrayWithObjects:@"k1",@"k2",@"k4", nil] notFoundMarker:@"not-finde"];
NSLog(@"object:%@",objects); }
#pragma mark 遍历字典
void dictionaryFor(){
NSDictionary *dict=[NSDictionary dictionaryWithObjectsAndKeys:
@"v1",@"k1",
@"v2",@"k2",
@"v3",@"k3",nil];
//第一种方法
for (id keys in dict) {
id object=[dict objectForKey:keys];
NSLog(@"%@--%@",keys,object);
} //第二种方法 通过迭代器遍历
NSEnumerator *keyenu=[dict keyEnumerator];
id key=nil;
NSLog(@"迭代器遍历:");
while (key=[keyenu nextObject]) {
id object=[dict objectForKey:key];
NSLog(@"%@--%@",key,object);
} NSLog(@"通过BLock遍历:");
//第二种方法 通过Block遍历
[dict enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) {
NSLog(@"%@--%@",key,obj); }]; } #pragma mark 可变字典
void mutableDictUser(){ Student *stu1=[Student initWithFirstName:@"lele" LastName:@"li"];
Student *stu2=[Student initWithFirstName:@"ll" LastName:@"li"];
Student *stu3=[Student initWithFirstName:@"xingle" LastName:@"li"];
NSMutableDictionary *dict=[NSMutableDictionary dictionary]; [dict setValue:stu1 forKey:@"k1"];
[dict setValue:stu2 forKey:@"k2"];
[dict setValue:stu3 forKey:@"k3"];
NSLog(@"%@",dict);
//删除所有元素
//[dict removeAllObjects];
//通过键值删除元素
[dict removeObjectForKey:@"k2"]; NSLog(@"%@",dict); } int main(int argc, const char * argv[])
{ @autoreleasepool { //dictCreat();
//dictUser(); //dictionaryFor();//遍历字典
mutableDictUser(); }
return 0;
}

Object-c学习之路九(字典(NSDictionary&NSMutableDictionary))的更多相关文章

  1. Foundation框架--字典( NSDictionary NSMutableDictionary )

    基础知识 1.字典不允许相同的key,但允许有相同的value. 2,字典是无序的,字典不能排序. 3.字典里的内容是成对存在的,不会出现单数. 4.快速创建的方式只适合不可变字典. 不可变字典 #i ...

  2. zigbee学习之路(九):串口(发送)

    一.前言 今天,我们来学习和实验串口模块方面的,串口通信是我们常用的通信手段,通过串口交互,我们可以很容易的和pc机进行数据的交换和发送,所以我们今天就来学习一下.这个实验所进行的功能是一开始CC25 ...

  3. Java学习之路(九):Map集合

    Map集合概述和特点 Map是属于java.util的一个接口Map<k,v> k:映射所维护的键的类型 v:映射值的类型 Map是将键映射到值的对象.一个映射不能包含重复的键:每个键最多 ...

  4. 嵌入式Linux驱动学习之路(九)Linux系统调用、驱动程序框架

    应用程序通过open  read  write close 等函数来操作计算机硬件.类似是一个接口. 当应用程序调用这些接口程序时,计算机是如何进入内核的呢?这是经过了系统调用. 实际上当调用接口函数 ...

  5. IOS7学习之路九(ios7自定义UIAlertView)

    IOS7的UIAlertView 不支持自定义,无法添加subview . 不过可以用第三方库git上的下载链接    https://github.com/wimagguc/ios-custom-a ...

  6. IOS学习之路九(配置restful webservice 框架restkit)

    RestKit 是一个开源的 objective-c 框架,容许在 iOS 和 Mac OS X 的 Objective-C 中与 RESTful Web 办事进行交互,包含简单的 HTTP requ ...

  7. Object C学习笔记13-Dictionary字典

    通过Array数组和Set集合的学习和理解,可以想象得到Dictionary也分为两种情况了,那就是可变和不可变两种类型的.的确如此,在Object C中提供了两个字典类,分别为NSDictionar ...

  8. FastAPI 学习之路(十九)处理错误

    系列文章: FastAPI 学习之路(一)fastapi--高性能web开发框架 FastAPI 学习之路(二) FastAPI 学习之路(三) FastAPI 学习之路(四) FastAPI 学习之 ...

  9. 学习之路三十九:新手学习 - Windows API

    来到了新公司,一开始就要做个程序去获取另外一个程序里的数据,哇,挑战性很大. 经过两周的学习,终于搞定,主要还是对Windows API有了更多的了解. 文中所有的消息常量,API,结构体都整理出来了 ...

随机推荐

  1. Ajax发送Post请求

    Ajax发送post请求与发送get请求大致类似.以下看详细实例.首先看JSP显示页面: <form action="servlet/LoginServlet" method ...

  2. Swiper滑动Html5手机浏览器自适应

    手机网页能通过window.screen.height, width获取屏幕分辨率,于是能够通过分辨率比率来计算高度. window.onload=function(){ var swiper = d ...

  3. .NET(C#):分析IL中的if-else,while和for语句并用Emit实现

    这是一篇关于IL和反射Emit的文章(所以不喜欢IL或者Emit的就没必要往下看了),要求读者对IL和Emit工作原理较了解.所有分析IL均在Visual Studio 2010 SP1下编译生成.( ...

  4. 【HDU】 1018 Big Number

    大意就是求 : log10(n!) = log10(1 * 2 *  3 * .......*n) = log10(1) + log10(2) + ........+log10(n); 打表的话会ML ...

  5. MP3文件结构及解码概述

    MP3文件结构概述 Layer-3音频文件.MPEG(MovingPicture Experts Group)在汉语中译为活动图像专家组,特指活动影音压缩标准,MPEG音频文件是MPEG1标准中的声音 ...

  6. chart.js制作折线图

    <!DOCTYPE html> <html> <head> <title></title> </head> <script ...

  7. oracle数据库recover和restore的区别

    restore just copy the physical file, recover will consistent the database.restore 是还原,文件级的恢复.就是物理文件还 ...

  8. [IDEA学习笔记][keymap]

    一个总站: http://www.youmeek.com/ 常用的快捷键keymap 提示: ctrl+N:快速打开一个类 Ctrl+P 方法参数提示显示 Ctrl+J 提示自定义模板 Ctrl+O ...

  9. 玩转Nodejs日志管理log4js(转)

    转自:http://blog.fens.me/nodejs-log4js/ 前言 日志对任何的应用来说都是至关重要的.在Nodejs中使用express框架并没有自带的日志模块,我们可以选择log4j ...

  10. String类中几个简单的常用方法

    这里我们就把 info 这个字符串 通过 “ ” 这个分隔符 分割成几部分 并吧没部分添加到 s 数组里面 注意:只有字符串才能分割 分隔符必须是 char 类型 而且是 字符串 里面存在的, 例如我 ...