字典就是关键字及其定义(描述)的集合。Cocoa中的实现字典的集合NSDictionary在给定的关键字(通常是一个NSString)下存储一个数值(可以是任何类型的对象)。然后你就可以用这个关键字来查找相应的数值。
不同于数组,字典(也被称为散列表或关联数组)使用的是键查询的优化存储方式。它可以立即找出要查询的数据,而不需要遍历整个数组进行查找。
可使用dictionaryWithObjectsAndKeys来创建字典
查询字典的值:objectForKey
NSMutableDictionary的dictionary方法可以创建一个可变字典,也可以使用dictionaryWithCapaticy:。
使用 setObject:forkey: 方法添加字典元素,如果关键字已存在,则用新植替换旧值。
类似的,NSMutableDictionary类允许随意添加或删除字典元素。
添加元素:setObject:forkey:
删除元素:removeObjectForKey:

  1. #import <Foundation/Foundation.h>
  2.  
  3. @interface MyClass : NSObject
  4. {
  5. NSString *firstName;
  6. NSString *lastName;
  7. }
  8. -(void) setFirstName:(NSString*)m_firstName;
  9. -(NSString*)firstName;
  10.  
  11. -(void) setLastName:(NSString*)m_lastName;
  12. -(NSString*)lastName;
  13. @end
  1. //
  2. // MyClass.m
  3. // Dictionary
  4. //
  5. // Created by Aron-Mac-VM on 3/14/16.
  6. // Copyright (c) 2016 PQLabs. All rights reserved.
  7. //
  8.  
  9. #import "MyClass.h"
  10.  
  11. @implementation MyClass
  12. -(void)setFirstName:(NSString *)m_firstName
  13. {
  14. firstName = m_firstName;
  15. }
  16. -(NSString*)firstName
  17. {
  18. return firstName;
  19. }
  20.  
  21. -(void)setLastName:(NSString *)m_lastName
  22. {
  23. lastName = m_lastName;
  24. }
  25. -(NSString*)lastName
  26. {
  27. return lastName;
  28. }
  29.  
  30. -(NSString*)description
  31. {
  32. if(firstName == nil || lastName == nil)
  33. {
  34. return @"No Name found.";
  35. }
  36. else
  37. {
  38. return [NSString stringWithFormat:@"%@ %@",firstName,lastName];
  39. }
  40. }
  41. @end
  1. //
  2. // main.m
  3. // Dictionary
  4. //
  5. // Created by Aron-Mac-VM on 3/14/16.
  6. // Copyright (c) 2016 PQLabs. All rights reserved.
  7. //
  8.  
  9. #import <Foundation/Foundation.h>
  10. #import "MyClass.h"
  11. int main(int argc, const char * argv[])
  12. {
  13.  
  14. @autoreleasepool {
  15.  
  16. MyClass *my1 = [MyClass new];
  17. MyClass *my2 = [[MyClass alloc]init];
  18. MyClass *my3 = [MyClass new];
  19. MyClass *my4 = [MyClass new];
  20.  
  21. NSDictionary *myClassDict;
  22. myClassDict = [NSDictionary dictionaryWithObjectsAndKeys:my1, @"my1",
  23. my2, @"my2",
  24. my3, @"my3",
  25. my4, @"my4",nil];
  26.  
  27. //获取值objectForkey
  28. MyClass *sub = [myClassDict objectForKey:@"my3"];
  29. if(sub==nil)
  30. {
  31. exit();
  32. }
  33. [sub setFirstName:@"pan"];
  34. [sub setLastName:@"Sunde"];
  35. NSLog(@"mofiy the data: %@",sub);
  36.  
  37. //遍历字典
  38. for(id key in myClassDict)
  39. {
  40. NSLog(@"key: %@, value: %@",key,[myClassDict objectForKey:key]);
  41. }
  42. //添加新元素
  43. //NSDictionary无法添加或者删除元素,可以使用NSMutableDictionary
  44.  
  45. NSMutableDictionary *myNewDict = [NSMutableDictionary dictionary];
  46.  
  47. //把原有的字典添加到新字典的一对元素
  48. [myNewDict setObject:myClassDict forKey:@"旧的不可变字典myClassDict"];
  49.  
  50. //遍历添加已有数据(原字典)
  51. for(id key in myClassDict)
  52. {
  53. [myNewDict setObject:[myClassDict objectForKey:key] forKey:key];
  54. }
  55. NSString *newValue = @"This is a new Value";
  56. NSString *newKey = @"a new Key";
  57. [myNewDict setObject:newValue forKey:newKey];
  58.  
  59. //遍历myNewDict
  60. NSLog(@"*********遍历字典myNewDict如下:");
  61. for(id key in myNewDict)
  62. {
  63. NSLog(@"Key: %@, value: %@",key,[myNewDict objectForKey:key]);
  64.  
  65. }
  66. NSLog(@"*********遍历字典myNewDict Over:");
  67. //删除元素
  68.  
  69. [myNewDict removeObjectForKey:@"a new Key"];
  70. for(id key in myNewDict )
  71. {
  72. NSLog(@"key: %@,value: %@",key,[myNewDict objectForKey:key]);
  73.  
  74. }
  75.  
  76. }
  77.  
  78. return ;
  79. }

字典:NSDictionary的应用举例的更多相关文章

  1. OC中的字典NSDictionary

    ========================== 字典 ========================== NSDictionary * dict = [[NSDictionary alloc] ...

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

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

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

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

  4. 字典NSDictionary以及NSMutableDictionary的用法总结

    做过Java语言 或者 C语言 开发的朋友应该很清楚 关键字map 吧,它可以将数据以键值对儿的形式储存起来,取值的时候通过KEY就可以直接拿到对应的值,非常方便.在Objective-C语言中 词典 ...

  5. IOS字典NSDictionary与NSMutableDictionary知识点

    字典中的元素是以键值对的形式存储的,键值对的键和值,都是任意的对象,但是键往往使用字符串,字典存储对象的地址没有顺序,字典的遍历分为:键的遍历和值的遍历,字典与数组的区别:数组讲究顺序,而字典可以快速 ...

  6. iOS - 字典(NSDictionary)

    1. 字典类型的常用处理 //---------------不可变字典 //1.字典的创建 NSArray *array1 = [NSArray arrayWithObjects:@"zha ...

  7. oc75--不可变字典NSDictionary

    // // main.m // NSDictionary // // #import <Foundation/Foundation.h> int main(int argc, const ...

  8. 字典NSDictionary和NSMutableDictionary的使用

    简介:字典是一种数据结构,字典里面的每一个元素,是一个key-value(键值对),key和value都是对象类型.同NSArray一样,里面的对象不用保持一致性. NSDictionary 1.字面 ...

  9. iOS/Objective-C开发 字典NSDictionary的深复制(使用category)

    目标:把NSDictionary对象转换成NSMutableDictionary对象,对象内容是字符串数组,需要实现完全复制(深复制). 如果调用NSDictionary的mutableCopy方法, ...

随机推荐

  1. 九 spring和mybatis整合

    1       spring和mybatis整合 1.1     整合思路 需要spring通过单例方式管理SqlSessionFactory. spring和mybatis整合生成代理对象,使用Sq ...

  2. openCV中IplImage的使用

    http://blog.csdn.net/welcome_xu/article/details/7650680 IplImage结构详细分析   IplImage 结构解读: typedef stru ...

  3. Uploadify上传问题

    版本:Uploadify Version 3.2官网:http://www.uploadify.com Uploadify是一款基于Jquery的上传插件,用起来很方便.但上传过程中的提示语言为英文, ...

  4. js模拟类的公有与私有 方法与变量

    var myConstructor = function(message){ //实例变量 this.message = message; //私有变量,外部不可见.用var声明的变量具有块作用域 v ...

  5. 兼容的获得event

    function getEvent(e) { var e=window.event || event; return e.srcElement || e.target; }

  6. springmvc返回值、数据写到页面、表单提交、ajax、重定向

    实验是在前一篇文章的项目上做的: 数据写到页面 后台往前台传数据 TestController添加 /** * 方法的返回值采用ModelAndView, new ModelAndView(" ...

  7. [LeetCode] Letter Combinations of a Phone Number(bfs)

    Given a digit string, return all possible letter combinations that the number could represent. A map ...

  8. SQLSERVER 16进制与10进制转换

    最近工控项目中遇到的16进制与10进制转换,在.NET中比较容易实现,在SQLSERVER中发现没有直接的转换,尤其是出现超出范围的long负数,即无符号64位整数在sqlserver中的存储.网上找 ...

  9. LeetCode -- Triangle 路径求最小和( 动态规划问题)

    Given a triangle, find the minimum path sum from top to bottom. Each step you may move to adjacent n ...

  10. Partial Tree---hdu5534(完全背包)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5534 题意:有n个节点,让这n个节点形成一棵树,这棵树的种类有很多种,现在告诉n-1个f[i],表示度 ...