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: ...
随机推荐
- [Leetcode][Python]36: Valid Sudoku
# -*- coding: utf8 -*-'''__author__ = 'dabay.wang@gmail.com' 36: Valid Sudokuhttps://oj.leetcode.com ...
- c语言函数---M
书画小说软件 制作更满意的读.更舒心的写.更轻松的公布 最全古典小说网 由本软件公布所得 main()主函数 每一C 程序都必须有一main()函数, 能够依据自己的爱好把它放在程序的某 个地方.有些 ...
- jeecms 2012 源码分析(2) 前台栏目页静态化分析
还是要说到web.xml文件 <welcome-file-list> <welcome-file>index.html</welcome-file> <wel ...
- jquery prop()方法 解决全选 不全选 反选 问题 解决执行一次不不能再执行问题
//1.如果通过prop()函数更改<input>和<button>元素的type属性,在多数浏览器上将会抛出一个错误,因为该属性一般不允许在后期更改.//如果使用prop() ...
- Archlinux 安装配置指导 2015-05-24
因为用的Linode VPS的系统是Archlinux的,想在本地弄个系统做测试用,这样比较方便.然后发现自己在6年前做的一个Archlinux 安装配置Flash,好怀念的赶脚. 时过进迁,没想到A ...
- iOS 使用UILocalizedIndexedCollation实现区域索引标题(Section Indexed Title)即拼音排序
UITableView在行数相当多的时候,给人的感觉是非常笨重的.通常为了方便用户使用,采用的方法有:搜索框.按层级展示.区域索引标题. 前两种就不用介绍了,此文就介绍区域索引标题的实现. 区域索引标 ...
- 转场动画1-Push 动画
先上效果图: 这篇文章完全是为造轮子制作:原作者是码农界的吴彦祖 作者视频下载地址 好的,我梳理一下思路: 理清思路 ||转场动画可以理解为一个对象,在这个对象里封装了一个动画.具体的我们跟着代码走 ...
- ROS使用rqt_console
打开一个新的终端在里面输入: sudo apt-get install ros-hydro-rqt ros-hydro-rqt-common-plugins ros-hydro-turtlesim 安 ...
- LINQ to Entity Framework 操作符(转)
在开始了解LINQ to Entities之前,需要先对.NET Framework 3.5版本后对C#语言的几个扩展特性做一些阐释,这有助于我们更容易.更深刻的理解LINQ to Entities技 ...
- codeforces 617E. XOR and Favorite Number 莫队
题目链接 给n个数, m个询问, 每次询问问你[l, r]区间内有多少对(i, j), 使得a[i]^a[i+1]^......^a[j]结果为k. 维护一个前缀异或值就可以了. 要注意的是 区间[l ...