OC中Foundation框架中有字典类,字典分不可变字典(NSDictionary)和可变字典(NSMutableDictionary),它们的使用如下:

不可变字典:

 //------------------不可变字典------------------

 //    创建字典对象、并打印输出
NSDictionary *dic = [NSDictionary dictionaryWithObject:@"onevalue" forKey:@"firstkey"];
NSLog(@"%@",dic); // 创建字典对象,并打印输出
NSDictionary *dicc = [NSDictionary dictionaryWithObjectsAndKeys:@"onevalue", @"firstkey", @"twovalue", @"secondkey",@"threevalue", @"thirdkey", @"threevalue", @"forthkey",nil];
NSLog(@"%@",dicc); // 输出某个键对应的值对象
NSLog(@"%@",[dicc objectForKey:@"firstkey"]); // 计算字典的元素个数(一个键值对为一个元素)、输出某个键对应的值
NSLog(@"%lu,%@",[dicc count], [dicc objectForKey:@"secondkey"]); // 使用数组存放有相同值的key
NSArray * arrayLastOut = [dicc allKeysForObject:@"threevalue"];
NSLog(@"%@",arrayLastOut);

可变字典:

 //------------------可变字典------------------
// 创建一个空的可变字典
NSMutableDictionary *mDic = [[NSMutableDictionary alloc]initWithCapacity:]; // 创建一个可变字典并赋初值
NSMutableDictionary * mDicc = [NSMutableDictionary dictionaryWithObjectsAndKeys: @"onevalue", @"firstkey", @"twovalue", @"secondkey", @"threevalue", @"thirdkey", @"threevalue", @"forthkey", nil]; // 把一个字典的全部值赋值给另一个字典
[mDic addEntriesFromDictionary:mDicc]; NSLog(@"%@", mDic); // 使用set更新字典中某个key对应的值,如果key存在,则更新value值
[mDic setValue: @"changeonevalue" forKey: @"firstkey"];
NSLog(@"%@", mDic); // 如果key值不存在,则增加一对key-value键值对
[mDic setValue:@"newvalue" forKey:@"fifthkey"];
NSLog(@"%@", mDic); // 完全替换成后面的字典内容
[mDicc setDictionary:dic];
NSLog(@"%@", mDicc); // 删除字典中的内容--删除1个
[mDicc removeObjectForKey:@"firstkey"]; // 删除多个
[mDicc removeObjectsForKeys:@[@"firstkey",@"secondkey"]]; // 删除全部内容
[mDicc removeAllObjects];
NSLog(@"%@", mDicc);

字典遍历:

 //    字典遍历
// 字典遍历方法1
for (int x=; x<mDicc.count; x++) {
NSLog(@"%@",[mDicc objectForKey:[[mDicc allKeys] objectAtIndex:x]]);
} // 字典遍历方法2
for (int x=; x<mDicc.count; x++) {
NSLog(@"%@",[[mDicc allValues] objectAtIndex:x]);
} // 字典遍历方法3
for (id key in mDicc) {
NSLog(@"%@",[mDicc objectForKey:key]);
} // 字典遍历方法4
id dicx;
NSEnumerator *dicEnu = [mDicc keyEnumerator];
while (dicx=[dicEnu nextObject]) {
NSLog(@"%@",[mDicc objectForKey:dicx]);
} // 字典遍历方法5
id dicenu;
NSEnumerator * dicEnum = [mDicc objectEnumerator];
while (dicenu=[dicEnum nextObject]) {
NSLog(@"ddd%@",dicenu);
}

IOS开发-ObjC-NSDictionary的更多相关文章

  1. iOS开发--字典(NSDictionary)和JSON字符串(NSString)之间互转

    iOS开发--字典(NSDictionary)和JSON字符串(NSString)之间互转 1. 字典转Json字符串 // 字典转json字符串方法 -(NSString *)convertToJs ...

  2. IOS开发之----NSDictionary,JSON和XML互相转换

    本文永久地址为 http://www.cnblogs.com/ChenYilong/p/4044521.html,转载请注明出处.     -(void)test {     //XML文本范例   ...

  3. ios开发之--NSDictionary和NSData之间的互转/NSString和NSData之间的互转

    NSDictionary转NSData,代码如下: +(NSData*)returnDataWith:(NSDictionary*)dict { NSData *data = [NSJSONSeria ...

  4. iOS开发系列--打造自己的“美图秀秀”

    --绘图与滤镜全面解析 概述 在iOS中可以很容易的开发出绚丽的界面效果,一方面得益于成功系统的设计,另一方面得益于它强大的开发框架.今天我们将围绕iOS中两大图形.图像绘图框架进行介绍:Quartz ...

  5. iOS开发系列--Swift进阶

    概述 上一篇文章<iOS开发系列--Swift语言>中对Swift的语法特点以及它和C.ObjC等其他语言的用法区别进行了介绍.当然,这只是Swift的入门基础,但是仅仅了解这些对于使用S ...

  6. iOS开发系列--通讯录、蓝牙、内购、GameCenter、iCloud、Passbook系统服务开发汇总

    --系统应用与系统服务 iOS开发过程中有时候难免会使用iOS内置的一些应用软件和服务,例如QQ通讯录.微信电话本会使用iOS的通讯录,一些第三方软件会在应用内发送短信等.今天将和大家一起学习如何使用 ...

  7. iOS开发系列--数据存取

    概览 在iOS开发中数据存储的方式可以归纳为两类:一类是存储为文件,另一类是存储到数据库.例如前面IOS开发系列-Objective-C之Foundation框架的文章中提到归档.plist文件存储, ...

  8. iOS开发系列--网络开发

    概览 大部分应用程序都或多或少会牵扯到网络开发,例如说新浪微博.微信等,这些应用本身可能采用iOS开发,但是所有的数据支撑都是基于后台网络服务器的.如今,网络编程越来越普遍,孤立的应用通常是没有生命力 ...

  9. iOS开发系列--无限循环的图片浏览器

    --UIKit之UIScrollView 概述 UIKit框架中有大量的控件供开发者使用,在iOS开发中不仅可以直接使用这些控件还可以在这些控件的基础上进行扩展打造自己的控件.在这个系列中如果每个控件 ...

  10. IOS开发基础知识碎片-导航

    1:IOS开发基础知识--碎片1 a:NSString与NSInteger的互换 b:Objective-c中集合里面不能存放基础类型,比如int string float等,只能把它们转化成对象才可 ...

随机推荐

  1. Bootstrap学习 - 组件

    下拉菜单 注意:需要先引入jQuery.js再引入bootstrap.js(依赖前者) <div class="dropdown pull-right"> //默认就是 ...

  2. Git学习 -- 标签管理

    新建标签 git tag <tagname>   默认为HEAD,也可以指定一个commit id eg.   git tag v0.9  git tag v1.0 31aa59c git ...

  3. ActionBar的简单使用

    只简单实现了一下ActionBar的使用,在右上角添加两个ActionBar,在左上角实现默认的返回箭头,类似于微信朋友圈的 这是MainActivity的代码: public class MainA ...

  4. 【啊哈!算法】算法7:Dijkstra最短路算法

    上周我们介绍了神奇的只有五行的Floyd最短路算法,它可以方便的求得任意两点的最短路径,这称为“多源最短路”.本周来来介绍指定一个点(源点)到其余各个顶点的最短路径,也叫做“单源最短路径”.例如求下图 ...

  5. nested query for "pat2" table

    mysql> select t.appln_id, t.filing_date, t.appln_kind, t.people, GROUP_CONCAT(pu.publn_kind) from ...

  6. 扩展欧几里得 POJ 1061

    感觉这道题目的数据好水啊...我的代码我都觉得姿势特别奇怪...竟然还过了... 好吧,原来不是姿势奇怪,而是逆元需要用的时候是余数也需要的时候,这里的余数是不需要的,所以就AC了 就说一下碰到的问题 ...

  7. qt博客

    http://blog.csdn.net/foruok/article/category/418962/1

  8. Processes and Threads

    http://www.cnblogs.com/xitang/archive/2011/09/24/2189460.html Processes and Threads 译者署名: 呆呆大虾 译者微博: ...

  9. Diamond Collector

    Diamond Collector 题目描述 Bessie the cow, always a fan of shiny objects, has taken up a hobby of mining ...

  10. CG之菲涅尔效果简单实现

    菲涅尔效果,指当光到达两种材质的接触面时,一些光在接触面的表面被反射出去,而另一部分光将发生折射穿过接触面. 现在要用shader来实现这种效果,如果要精确地描述这种底层的物理,其计算公式是非常复杂的 ...