字典就是关键字及其定义(描述)的集合。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的应用举例的更多相关文章

  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. JS中基本window对象操作

    ---恢复内容开始--- 一.使用window中的属性时   window.属性,直接跟属性名.而调用window的函数时  window.hanshu(): 要在其函数名后面加括号. 二.windo ...

  2. MySQL常用SQL/函数汇总(持续更新)

    自动生成ROWNUN SELECT (@rowNO := @rowNo+1) AS rowno,a.uuid FROM (SELECT * FROM h_log_proc) a,(SELECT @ro ...

  3. Myeclipse配置 项目编码格式

    修改MyEclipse 工作空间的编码 修改之后,在该工作空间下创建的任何项目,编码都是UTF-8,既,该项目下所有文件都是utf-8 格式,工作空间影响项目,项目影响文件 General --> ...

  4. HBase的属性

    一:基本属性 1.查看属性 2.解释属性 NAME:列簇名 BLOOMFILTER:布隆过滤器,用于对storefile的过滤 共有三种类型: ROW:行健过滤 ROWCOL:行列过滤 NONE:无 ...

  5. IOS事件处理机制(关于触发者和响应者的确认)

    事件处理机制 在iOS中发生触摸后,事件会加入到UIApplication事件队列(在这个系列关于iOS开发的第一篇文章中我们分析iOS程序原理的时候就说过程序运行后UIApplication会循环监 ...

  6. Android性能优化典范(转)

    转载自oschina. 2015年伊始,Google发布了关于Android性能优化典范的专题, 一共16个短视频,每个3-5分钟,帮助开发者创建更快更优秀的Android App.课程专题不仅仅介绍 ...

  7. mysql tinyint smallint mediumint int bigint

    类型 存储所占空间 (无论显示多少位) (单位 字节/bytes) 存储数据范围 最大显示长度 tinyint 1 -128   ~  127                 signed 0     ...

  8. 5分钟弄懂Docker!

    http://www.csdn.net/article/2014-07-02/2820497-what%27s-docker 关注点:1.DOCKER和VM的架构区别 2.Docker 的容器利用了  ...

  9. echo 命令

    echo 命令 -n:表示不换行: -e:对特殊字符的解释执行,比如说变色: 例: [root@bogon ~]# echo -n "test"test[root@bogon ~] ...

  10. 细聊分布式ID生成方法

    细聊分布式ID生成方法 https://mp.weixin.qq.com/s?__biz=MjM5ODYxMDA5OQ==&mid=403837240&idx=1&sn=ae9 ...