字典: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方法, ...
随机推荐
- flink - accumulator
读accumlator JobManager 在job finish的时候会汇总accumulator的值, newJobStatus match { case JobStatus.FINISHE ...
- JAVA 调用matlab 出错总结
1.Java:Unsupported major.minor version 51.0 (unable to load class 出现该错误是由于class编译器的JDK版本高于运行期的JDK版本. ...
- day08
软件系统体系结构 常见软件系统体系结构B/S.C/S 1.1 C/S C/S结构即客户端/服务器(Client/Server),例如QQ: 需要编写服务器端程序,以及客户端程序,例如我们安装的 ...
- Nginx 启动脚本/重启脚本
第一步先运行命令关闭nginx sudo kill `cat /usr/local/nginx/logs/nginx.pid` 第二步 vi /etc/init.d/nginx 输入以下内容 #!/b ...
- drop、 truncate 、 delete
相同点: truncate和不带where子句的delete, 以及drop都会删除表内的数据 不同点: 1. truncate和 delete只删除数据不删除表的结构 drop语句将删除表的 ...
- CSS弹性盒布局
<html> <head> <meta charset="utf-8"/> <title></title> <st ...
- ArcGIS API for Silverlight 加载google地图
原文:ArcGIS API for Silverlight 加载google地图 using System; using System.Net; using System.Windows; using ...
- [LeetCode]题解(python):052-N-Queens II
题目来源 https://leetcode.com/problems/n-queens-ii/ Follow up for N-Queens problem. Now, instead outputt ...
- The "Real" Project Plan
"I need a project plan by tomorrow morning." As project managers, that's what we hear. But ...
- office-002-onenote、word、outlook取消首字母大小写图文详解
此文主要讲述如何取消微软办公软件 onenote.work.outlook 中首字母大写等的自动更正项,其他 office 办公软件相关设置的操作,可参考此文进行相应的设置.希望能对亲有所帮助,若有错 ...