博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
字典:NSDictionary的应用举例
阅读量:5264 次
发布时间:2019-06-14

本文共 3377 字,大约阅读时间需要 11 分钟。

字典就是关键字及其定义(描述)的集合。Cocoa中的实现字典的集合NSDictionary在给定的关键字(通常是一个NSString)下存储一个数值(可以是任何类型的对象)。然后你就可以用这个关键字来查找相应的数值。

不同于数组,字典(也被称为散列表或关联数组)使用的是键查询的优化存储方式。它可以立即找出要查询的数据,而不需要遍历整个数组进行查找。
可使用dictionaryWithObjectsAndKeys来创建字典
查询字典的值:objectForKey
NSMutableDictionary的dictionary方法可以创建一个可变字典,也可以使用dictionaryWithCapaticy:。
使用 setObject:forkey: 方法添加字典元素,如果关键字已存在,则用新植替换旧值。
类似的,NSMutableDictionary类允许随意添加或删除字典元素。
添加元素:setObject:forkey:
删除元素:removeObjectForKey:

 

#import 
@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 
#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(1); } [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 0;}

 

转载于:https://www.cnblogs.com/mypsq/p/5276307.html

你可能感兴趣的文章
51nod1076 (边双连通)
查看>>
ViewPager的onPageChangeListener里面的一些方法参数:
查看>>
Linux pipe函数
查看>>
java equals 小记
查看>>
2019春 软件工程实践 助教总结
查看>>
Zerver是一个C#开发的Nginx+PHP+Mysql+memcached+redis绿色集成开发环境
查看>>
多线程实现资源共享的问题学习与总结
查看>>
java实现哈弗曼树
查看>>
程序的静态链接,动态链接和装载 (补充)
查看>>
关于本博客说明
查看>>
线程androidAndroid ConditionVariable的用法
查看>>
python常用模块之sys, os, random
查看>>
HDU 2548 A strange lift
查看>>
Linux服务器在外地,如何用eclipse连接hdfs
查看>>
react双组件传值和传参
查看>>
[Kaggle] Sentiment Analysis on Movie Reviews
查看>>
价值观
查看>>
mongodb命令----批量更改文档字段名
查看>>
MacOS copy图标shell脚本
查看>>
国外常见互联网盈利创新模式
查看>>