Objective-c 字典对象
oc 中的 NSDictionary 的作用同 java 中的字典类相同,提供了 “键-值”对的组合。比如,是用字典类实现对学生姓名和学号的存放,编号是一个键(唯一性),姓名是值。它的方法有:

下面通过例子来具体说明它的用法:
1)构建字典
#import <Foundation/Foundation.h>
int main(int argc , const char *argv[]){
@autoreleasepool{
NSDictionary *dicti1 = [NSDictionary dictionaryWithObjectsAndKeys:@"zhangsan",@"",@"lisi",@"",@"wangwu",@"", nil];
NSEnumerator *keynum = [dicti1 keyEnumerator];
for(NSString *key in keynum)
NSLog(@"key = %@ , value = %@",key,[dicti1 objectForKey:key]);
NSLog(@"----------------------------");
NSDictionary *dicti2 = [[NSDictionary alloc]initWithObjectsAndKeys:@"zhangsan",@"",@"lisi",@"",@"wangwu",@"", nil];
keynum = [dicti2 keyEnumerator];
for(NSString *key in keynum)
NSLog(@"key = %@ , value = %@",key,[dicti2 objectForKey:key]);
NSLog(@"----------------------------");
NSDictionary *dicti3 = @{@"":@"zhangsan",@"":@"lisi",@"":@"wangwu"};
keynum = [dicti3 keyEnumerator];
for(NSString *key in keynum)
NSLog(@"key = %@ , value = %@",key,[dicti3 objectForKey:key]);
NSLog(@"------------------------------");
NSArray *keyarray = @[@"",@"",@""];
NSArray *valuearray = @[@"zhangsan",@"lisi",@"wangwu"];
NSDictionary *dicti4 = [NSDictionary dictionaryWithObjects:valuearray forKeys:keyarray];
keynum = [dicti4 keyEnumerator];
for(NSString *key in keynum)
NSLog(@"key = %@ , value = %@",key,[dicti4 objectForKey:key]);
}
return ;
}
2)字典的遍历
#import <Foundation/Foundation.h>
int main(int argc , const char *argv[]){
@autoreleasepool {
NSDictionary *dicti = [NSDictionary dictionaryWithObjectsAndKeys:@"zhangsan",@"",@"lisi",@"",@"wangwu",@"", nil];
NSEnumerator *number = [dicti keyEnumerator];
for(NSString *key in number)
NSLog(@"key = %@ , value = %@",key,[dicti objectForKey:key]);
NSLog(@"----------------------------");
NSArray *keyarray = [dicti allKeys];
for(NSString *key in keyarray)
NSLog(@"key = %@ , value = %@",key,[dicti objectForKey:key]);
NSLog(@"-----------------------------");
for(NSString *key in dicti)
NSLog(@"key = %@ , value = %@",key,[dicti objectForKey:key]);
NSLog(@"-----------------------------");
[dicti enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) {
NSLog(@"key = %@ ,value = %@",key,obj);
}];
}
return 0;
}
3) 文件的读取
#import <Foundation/Foundation.h>
int main(int argc , const char *argv[]){
@autoreleasepool {
NSDictionary *dicti = [NSDictionary dictionaryWithObjectsAndKeys:@"zhangsan",@"",@"lisi",@"",@"wangnwu",@"",nil];
NSString *filename = @"dicti.txt";
BOOL iswrite = [dicti writeToFile:filename atomically:YES];
if(iswrite)
NSLog(@"write to file ok");
else
NSLog(@"write to file error");
NSDictionary *dicti2 = [NSDictionary dictionaryWithContentsOfFile:filename];
NSLog(@"dicti2 = %@",dicti2);
}
return 0;
}
4) 查找
#import <Foundation/Foundation.h> int main(int argc , const char *argv[])
{
@autoreleasepool {
NSDictionary *dicti = [NSDictionary dictionaryWithObjectsAndKeys:@"zhangsan",@"",@"lisi",@"",@"wangwu",@"",@"zhangsan",@"",nil]; NSArray *keyarray = [dicti allKeys]; // 查找所有键值
NSLog(@"%@",keyarray); NSArray *valuearray = [dicti allValues]; // 查找所有值
NSLog(@"%@",valuearray); NSString *value = [dicti objectForKey:@""]; // 按键值查找
NSLog(@"value = %@",value); value = dicti[@""];
NSLog(@"value = %@",value); NSArray *keyarray2 = @[@"",@"",@""]; // 利用数组的方式查找
NSArray *vlauearray2 = [dicti objectsForKeys:keyarray2 notFoundMarker:@"nil"];
NSLog(@"vlauearray2 = %@",vlauearray2); NSArray *keyarray3 = [dicti allKeysForObject:@"zhangsan"];
NSLog(@"keyarray3 = %@",keyarray3); NSDictionary *dicti2 = [dicti dictionaryWithValuesForKeys:keyarray2];
NSLog(@"dicti2 = %@",dicti2);
}
return ;
}
5) 排序
#import <Foundation/Foundation.h>
int main(int argc,char **argv){
@autoreleasepool {
NSDictionary *dicti = [NSDictionary dictionaryWithObjectsAndKeys:@"zhangsan",@"",@"lisi",@"",@"wangwu",@"",@"zhangsan",@"",nil];
NSLog(@"dicti = %@",dicti);
NSDictionary *dicti2 = [NSDictionary dictionaryWithObjectsAndKeys:@"zhangsan",@,@"lisi",@,@"wangu",@, nil];
NSLog(@"dicti2 = %@",dicti2);
NSArray *array = [dicti2 keysSortedByValueUsingSelector:@selector(compare:)];
for(NSNumber *key in array)
NSLog(@"key = %@,value = %@",key,dicti2[key]);
}
return ;
}
2. 同样字典对象中也存在可变字典(NSDictionary),下面我们来通过一个例子来说明它的用法:

代码举例:
#import <Foundation/Foundation.h>
int main(int argc,char **argv){
@autoreleasepool {
NSMutableDictionary *mdicti = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"zhangsan",@"",@"lisi",@"",@"wangwu",@"",nil];
[mdicti setValue:@"zhaoliu" forKey:@""]; // 如果 key 不存在就添加,key 存在就修改
NSLog(@"mdicti = %@",mdicti);
[mdicti setValue:@"zzz" forKey:@""];
NSLog(@"mdicti = %@",mdicti);
mdicti[@""] = @"bbb";
NSLog(@"mdicti = %@",mdicti);
NSDictionary *dicti = [NSDictionary dictionaryWithObjectsAndKeys:@"aaa",@"",@"bbb",@"",@"ccc",@"",nil];
[mdicti addEntriesFromDictionary:dicti];
NSLog(@"dicti = %@",mdicti);
[mdicti removeObjectForKey:@""]; // 删除
NSLog(@"mdicti = %@",mdicti);
NSArray *array = @[@"",@"",@""];
[mdicti removeObjectsForKeys:array];
NSLog(@"mdicti = %@",mdicti);
[mdicti removeAllObjects]; // 删除所有的
NSLog(@"%@",mdicti);
}
return ;
}
Objective-c 字典对象的更多相关文章
- VBS使用Scripting.Dictionary字典对象
Scripting.Dictionary是个很有用的组件,其创建了类似于Key索引对应Value值的字典对象,并且在其内部提供了快速索引访问的机制,可以让我们通过Key直接索引到指定的Value,比遍 ...
- python 基础学习(字典对象,set对象)
1.dict 字典对象 a.定义对象 d={'a':14,'b':12}b.通过key获取value d['a'] 方法1.判断key是否存在 if 'a' in d: d['a']方法2:通过用ge ...
- JavaScript中创建字典对象(dictionary)实例
这篇文章主要介绍了JavaScript中创建字典对象(dictionary)实例,本文直接给出了实现的源码,并给出了使用示例,需要的朋友可以参考下 对于JavaScript来说,其自身的Array对象 ...
- python爬虫requests json与字典对象互相转换
import requests import json ''' json.loads(json_str) json字符串转换成字典 json.dumps(dict) 字典转换成json字符串 ''' ...
- 有一个字典对象,d = {'a':1,'b':2},请用尽量简洁的代码将d转换成{1: 'a', 2: 'b'}
题目:有一个字典对象,d = {'a':1,'b':2},请用尽量简洁的代码将d转换成{1: 'a', 2: 'b'} 第一种方法: d = {'a': 1, 'b': 2}d = {value: k ...
- python json与字典对象互相转换
改文章转自:https://www.cnblogs.com/Lin-Yi/p/7640147.html 1 import requests 2 import json 3 ''' 4 json.loa ...
- 字典对象的 Pythonic 用法(上篇)
字典对象在Python中作为最常用的数据结构之一,和数字.字符串.列表.元组并列为5大基本数据结构,字典中的元素通过键来存取,而非像列表一样通过偏移存取.笔者总结了字典的一些常用Pyhonic用法,这 ...
- 字典对象的 Pythonic 用法(上篇:转载)
转载:https://mp.weixin.qq.com/s?timestamp=1498528588&src=3&ver=1&signature=DfFeOFPXy44ObCM ...
- iOS :Object-C 语言merge两个字典对象
Object-C 语言merge两个字典对象 - (id)mutableDictionaryCopyIfNeeded:(id)dictObj { if ([dictObj isKindOfClass: ...
随机推荐
- APK反编译。
http://blog.csdn.net/ithomer/article/details/6727581?reload
- 数组-Find Minimum in Rotated Sorted Array
排序数组在旋转后,可以分为前后两个排序子序列.在没有相同元素的情况下,前一个数组中的元素均大于后一个数组中的元素. 如果我们要找最小元素,则只要找到两个数组的分界点即可,即第二个子序列的开始元素. 由 ...
- NYOJ-252 01串
01串 时间限制:1000 ms | 内存限制:65535 KB 难度:2 描写叙述 ACM的zyc在研究01串,他知道某一01串的长度,但他想知道不含有"11"子串的这样的长 ...
- 赵雅智_BroadcastReceiver
BroadcastReceiver 用于接收程序(包含用户开放的程序和系统内建程序)所发出的Broadcast intent 耗电量 开机启动 窃取别人短信 窃取别人电话 开发: 创建须要启动的Br ...
- mysql关联更新
update tb_sdd_info a,tb_bnm_evian_info b set a.username=b.username where a.username=b.memberno and ...
- SQL学习之去重复查询
下面是一张表的数据
- Python 读写文件操作
python进行文件读写的函数是open或file file_handler = open(filename,,mode) Table mode 模式 描述 r 以读方式打开文件,可读取文件信息. w ...
- Deep Learning(深度学习)学习笔记整理系列之(七)
Deep Learning(深度学习)学习笔记整理系列 zouxy09@qq.com http://blog.csdn.net/zouxy09 作者:Zouxy version 1.0 2013-04 ...
- 错误:类Byte是公共的,应在名为Byte.java 的文件中声明public class Byte{}一个错误
解决:文件名是xyz,那你的这个类名也应该是xyz.
- 从UIImage的矩阵变换看矩阵运算的原理
1.矩阵的基本知识: struct CGAffineTransform { CGFloat a, b, c, d; CGFloat tx, ty;}; CGAffineTransform CGAf ...