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. Class.forName() 初始化、Thread.currentThread().getContextClassLoader().getResourceAsStream

    Class.forName() 和 ClassLoader.loadClass()的区别? Class.forName() 和 Class.forName().NewInstance()的区别? Cl ...

  2. JSP 语法/标签

    ┣1.declaration Declaration定义了JSP脚本语言使用的变量和函数,这类似于Java中定义全局变量,或可以把它想像成pascal编程语言中的单元文件的interface部分.声明 ...

  3. ubuntu apache2 流量限制模块

    mod-bw is an Apache 2 module provided to solve the problem of limiting users’ and virtual hosts’ ban ...

  4. setAttribute的兼容性

    class和className兼容方法: object.setAttribute("class","content") 在IE8.Chrome.火狐.Opera ...

  5. Excel 帮助类

    using System; using System.Collections.Generic; using System.Data; using System.Drawing; using Syste ...

  6. TCP/IP网络协议栈(转载)

    原文:http://www.cnblogs.com/xuanku/p/tcpip.html TCP/IP网络协议栈分为四层, 从下至上依次是: 链路层 其实在链路层下面还有物理层, 指的是电信号的传输 ...

  7. hihocoder网络流一·Ford-Fulkerson算法

    网络流一·Ford-Fulkerson算法 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 小Hi和小Ho住在P市,P市是一个很大很大的城市,所以也面临着一个大城市都会遇 ...

  8. android 1.6 launcher研究之自定义ViewGroup (转 2011.06.03(二)——— android 1.6 launcher研究之自定义ViewGroup )

    2011.06.03(2)——— android 1.6 launcher研究之自定义ViewGroup2011.06.03(2)——— android 1.6 launcher研究之自定义ViewG ...

  9. java source map

    Chrome 更新后出现了 jquery.min.map 404  (Not Found) 的信息 这个到底是什么东西?查询了一下,得到了以下资料 JQuery 官方解释 摘录一下內容 从 jQuer ...

  10. 在Delphi中使用C++对象(转)

    源:http://blog.csdn.net/henreash/article/details/7352335 Delphi是市场上最好的RAD工具,但是现在C++占据着主导地位,有时针对一个问题很难 ...