字典:NSDictionary的应用举例
字典就是关键字及其定义(描述)的集合。Cocoa中的实现字典的集合NSDictionary在给定的关键字(通常是一个NSString)下存储一个数值(可以是任何类型的对象)。然后你就可以用这个关键字来查找相应的数值。
不同于数组,字典(也被称为散列表或关联数组)使用的是键查询的优化存储方式。它可以立即找出要查询的数据,而不需要遍历整个数组进行查找。
可使用dictionaryWithObjectsAndKeys来创建字典
查询字典的值:objectForKey
NSMutableDictionary的dictionary方法可以创建一个可变字典,也可以使用dictionaryWithCapaticy:。
使用 setObject:forkey: 方法添加字典元素,如果关键字已存在,则用新植替换旧值。
类似的,NSMutableDictionary类允许随意添加或删除字典元素。
添加元素:setObject:forkey:
删除元素:removeObjectForKey:
- #import <Foundation/Foundation.h>
- @interface MyClass : NSObject
- {
- NSString *firstName;
- NSString *lastName;
- }
- -(void) setFirstName:(NSString*)m_firstName;
- -(NSString*)firstName;
- -(void) setLastName:(NSString*)m_lastName;
- -(NSString*)lastName;
- @end
- //
- // MyClass.m
- // Dictionary
- //
- // Created by Aron-Mac-VM on 3/14/16.
- // Copyright (c) 2016 PQLabs. All rights reserved.
- //
- #import "MyClass.h"
- @implementation MyClass
- -(void)setFirstName:(NSString *)m_firstName
- {
- firstName = m_firstName;
- }
- -(NSString*)firstName
- {
- return firstName;
- }
- -(void)setLastName:(NSString *)m_lastName
- {
- lastName = m_lastName;
- }
- -(NSString*)lastName
- {
- return lastName;
- }
- -(NSString*)description
- {
- if(firstName == nil || lastName == nil)
- {
- return @"No Name found.";
- }
- else
- {
- return [NSString stringWithFormat:@"%@ %@",firstName,lastName];
- }
- }
- @end
- //
- // main.m
- // Dictionary
- //
- // Created by Aron-Mac-VM on 3/14/16.
- // Copyright (c) 2016 PQLabs. All rights reserved.
- //
- #import <Foundation/Foundation.h>
- #import "MyClass.h"
- int main(int argc, const char * argv[])
- {
- @autoreleasepool {
- MyClass *my1 = [MyClass new];
- MyClass *my2 = [[MyClass alloc]init];
- MyClass *my3 = [MyClass new];
- MyClass *my4 = [MyClass new];
- NSDictionary *myClassDict;
- myClassDict = [NSDictionary dictionaryWithObjectsAndKeys:my1, @"my1",
- my2, @"my2",
- my3, @"my3",
- my4, @"my4",nil];
- //获取值objectForkey
- MyClass *sub = [myClassDict objectForKey:@"my3"];
- if(sub==nil)
- {
- exit();
- }
- [sub setFirstName:@"pan"];
- [sub setLastName:@"Sunde"];
- NSLog(@"mofiy the data: %@",sub);
- //遍历字典
- for(id key in myClassDict)
- {
- NSLog(@"key: %@, value: %@",key,[myClassDict objectForKey:key]);
- }
- //添加新元素
- //NSDictionary无法添加或者删除元素,可以使用NSMutableDictionary
- NSMutableDictionary *myNewDict = [NSMutableDictionary dictionary];
- //把原有的字典添加到新字典的一对元素
- [myNewDict setObject:myClassDict forKey:@"旧的不可变字典myClassDict"];
- //遍历添加已有数据(原字典)
- for(id key in myClassDict)
- {
- [myNewDict setObject:[myClassDict objectForKey:key] forKey:key];
- }
- NSString *newValue = @"This is a new Value";
- NSString *newKey = @"a new Key";
- [myNewDict setObject:newValue forKey:newKey];
- //遍历myNewDict
- NSLog(@"*********遍历字典myNewDict如下:");
- for(id key in myNewDict)
- {
- NSLog(@"Key: %@, value: %@",key,[myNewDict objectForKey:key]);
- }
- NSLog(@"*********遍历字典myNewDict Over:");
- //删除元素
- [myNewDict removeObjectForKey:@"a new Key"];
- for(id key in myNewDict )
- {
- NSLog(@"key: %@,value: %@",key,[myNewDict objectForKey:key]);
- }
- }
- return ;
- }
字典:NSDictionary的应用举例的更多相关文章
- OC中的字典NSDictionary
========================== 字典 ========================== NSDictionary * dict = [[NSDictionary alloc] ...
- Foundation框架--字典( NSDictionary NSMutableDictionary )
基础知识 1.字典不允许相同的key,但允许有相同的value. 2,字典是无序的,字典不能排序. 3.字典里的内容是成对存在的,不会出现单数. 4.快速创建的方式只适合不可变字典. 不可变字典 #i ...
- iOS开发--字典(NSDictionary)和JSON字符串(NSString)之间互转
iOS开发--字典(NSDictionary)和JSON字符串(NSString)之间互转 1. 字典转Json字符串 // 字典转json字符串方法 -(NSString *)convertToJs ...
- 字典NSDictionary以及NSMutableDictionary的用法总结
做过Java语言 或者 C语言 开发的朋友应该很清楚 关键字map 吧,它可以将数据以键值对儿的形式储存起来,取值的时候通过KEY就可以直接拿到对应的值,非常方便.在Objective-C语言中 词典 ...
- IOS字典NSDictionary与NSMutableDictionary知识点
字典中的元素是以键值对的形式存储的,键值对的键和值,都是任意的对象,但是键往往使用字符串,字典存储对象的地址没有顺序,字典的遍历分为:键的遍历和值的遍历,字典与数组的区别:数组讲究顺序,而字典可以快速 ...
- iOS - 字典(NSDictionary)
1. 字典类型的常用处理 //---------------不可变字典 //1.字典的创建 NSArray *array1 = [NSArray arrayWithObjects:@"zha ...
- oc75--不可变字典NSDictionary
// // main.m // NSDictionary // // #import <Foundation/Foundation.h> int main(int argc, const ...
- 字典NSDictionary和NSMutableDictionary的使用
简介:字典是一种数据结构,字典里面的每一个元素,是一个key-value(键值对),key和value都是对象类型.同NSArray一样,里面的对象不用保持一致性. NSDictionary 1.字面 ...
- iOS/Objective-C开发 字典NSDictionary的深复制(使用category)
目标:把NSDictionary对象转换成NSMutableDictionary对象,对象内容是字符串数组,需要实现完全复制(深复制). 如果调用NSDictionary的mutableCopy方法, ...
随机推荐
- 九 spring和mybatis整合
1 spring和mybatis整合 1.1 整合思路 需要spring通过单例方式管理SqlSessionFactory. spring和mybatis整合生成代理对象,使用Sq ...
- openCV中IplImage的使用
http://blog.csdn.net/welcome_xu/article/details/7650680 IplImage结构详细分析 IplImage 结构解读: typedef stru ...
- Uploadify上传问题
版本:Uploadify Version 3.2官网:http://www.uploadify.com Uploadify是一款基于Jquery的上传插件,用起来很方便.但上传过程中的提示语言为英文, ...
- js模拟类的公有与私有 方法与变量
var myConstructor = function(message){ //实例变量 this.message = message; //私有变量,外部不可见.用var声明的变量具有块作用域 v ...
- 兼容的获得event
function getEvent(e) { var e=window.event || event; return e.srcElement || e.target; }
- springmvc返回值、数据写到页面、表单提交、ajax、重定向
实验是在前一篇文章的项目上做的: 数据写到页面 后台往前台传数据 TestController添加 /** * 方法的返回值采用ModelAndView, new ModelAndView(" ...
- [LeetCode] Letter Combinations of a Phone Number(bfs)
Given a digit string, return all possible letter combinations that the number could represent. A map ...
- SQLSERVER 16进制与10进制转换
最近工控项目中遇到的16进制与10进制转换,在.NET中比较容易实现,在SQLSERVER中发现没有直接的转换,尤其是出现超出范围的long负数,即无符号64位整数在sqlserver中的存储.网上找 ...
- LeetCode -- Triangle 路径求最小和( 动态规划问题)
Given a triangle, find the minimum path sum from top to bottom. Each step you may move to adjacent n ...
- Partial Tree---hdu5534(完全背包)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5534 题意:有n个节点,让这n个节点形成一棵树,这棵树的种类有很多种,现在告诉n-1个f[i],表示度 ...