Object-c学习之路九(字典(NSDictionary&NSMutableDictionary))
字典的练习和使用(遍历,搜索。。。)(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))的更多相关文章
- Foundation框架--字典( NSDictionary NSMutableDictionary )
基础知识 1.字典不允许相同的key,但允许有相同的value. 2,字典是无序的,字典不能排序. 3.字典里的内容是成对存在的,不会出现单数. 4.快速创建的方式只适合不可变字典. 不可变字典 #i ...
- zigbee学习之路(九):串口(发送)
一.前言 今天,我们来学习和实验串口模块方面的,串口通信是我们常用的通信手段,通过串口交互,我们可以很容易的和pc机进行数据的交换和发送,所以我们今天就来学习一下.这个实验所进行的功能是一开始CC25 ...
- Java学习之路(九):Map集合
Map集合概述和特点 Map是属于java.util的一个接口Map<k,v> k:映射所维护的键的类型 v:映射值的类型 Map是将键映射到值的对象.一个映射不能包含重复的键:每个键最多 ...
- 嵌入式Linux驱动学习之路(九)Linux系统调用、驱动程序框架
应用程序通过open read write close 等函数来操作计算机硬件.类似是一个接口. 当应用程序调用这些接口程序时,计算机是如何进入内核的呢?这是经过了系统调用. 实际上当调用接口函数 ...
- IOS7学习之路九(ios7自定义UIAlertView)
IOS7的UIAlertView 不支持自定义,无法添加subview . 不过可以用第三方库git上的下载链接 https://github.com/wimagguc/ios-custom-a ...
- IOS学习之路九(配置restful webservice 框架restkit)
RestKit 是一个开源的 objective-c 框架,容许在 iOS 和 Mac OS X 的 Objective-C 中与 RESTful Web 办事进行交互,包含简单的 HTTP requ ...
- Object C学习笔记13-Dictionary字典
通过Array数组和Set集合的学习和理解,可以想象得到Dictionary也分为两种情况了,那就是可变和不可变两种类型的.的确如此,在Object C中提供了两个字典类,分别为NSDictionar ...
- FastAPI 学习之路(十九)处理错误
系列文章: FastAPI 学习之路(一)fastapi--高性能web开发框架 FastAPI 学习之路(二) FastAPI 学习之路(三) FastAPI 学习之路(四) FastAPI 学习之 ...
- 学习之路三十九:新手学习 - Windows API
来到了新公司,一开始就要做个程序去获取另外一个程序里的数据,哇,挑战性很大. 经过两周的学习,终于搞定,主要还是对Windows API有了更多的了解. 文中所有的消息常量,API,结构体都整理出来了 ...
随机推荐
- IOS中的各种Picker
简述 在应用的一些设置中经常要用到一些Picker来快速帮助用户选定取值,一般会用到的有UIDatePicker,UIPickerView以及UIImagePickerController. 初始界面 ...
- Android控件TextView的实现原理分析
文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/8636153 在前面一个系列的文章中,我们以窗口 ...
- IOS基于新浪微博开放平台微博APP
1.基于新浪微博开放平台APP源码 2.gitHub源代码下载地址 https://github.com/whzhaochao/SinaWeiBoOpen 3.用到的第三放开源库 3.1 RTLab ...
- Oracle11g的注册表清理
每次卸载了oracle总是有一堆注册表没有清理,麻烦,特地在网上找了一个较为完整的,全文复制过来,存自己这里,如下: <<< Windows Registry Editor Vers ...
- Sql存储过程解密方法
在网上查到这样一个存储过程解密的方法,用起来简单,收藏到这里: )) AS ------------------------sql2000大于40000的----------------- --原作: ...
- Struts2学习笔记 国际化(Internationalization)
概述 国际化(Internationalization),通途的讲,就是让软件实现对多种语言的支持.可以通过简单的设置就可以从一种语言切换到另一种语言.用的最多的地方就是在应用程序的界面表示上.我们经 ...
- poj 3158kickdown
我是来吐槽poj的!!! 第一次做poj,被题目中的输入输出格式打败了 ,醉了醉了 Description A research laboratory of a world-leading autom ...
- 转:ProGuard 常见命令备份
转: https://my.oschina.net/sunyh/blog/30359 #-dontshrink #不压缩,减少jar的大小一般都压缩掉,为了增加反编译的难度也可以不压缩 #-donto ...
- Python多线程同步命令行模拟进度显示
最近在一个Python(3.5)的小项目中需要用到多线程加快处理速度,同时需要显示进度,于是查了些资料找到几个实现方法:线程池的map-reduce和Queue结合线程的实现.这里简单的实例介绍一下Q ...
- [C++程序设计]用指针变量作函数参数接收数组地址
#include <iostream> using namespace std; void select_sort(int *p, int n) { int i, j, k; ; i &l ...