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: ...
随机推荐
- XCode破解真机调试
XCode破解真机调试 3.0 一.这样做以后能怎样 以device模式编译出app 可以再越狱后的设备上运行 二.要会点什么 命令行,也就是terminal.终端.控制台... vim 三.开始吧 ...
- [Leetcode][Python]28: Implement strStr()
# -*- coding: utf8 -*-'''__author__ = 'dabay.wang@gmail.com' 28: Implement strStr()https://oj.leetco ...
- poj1657---chessboard
对棋盘横纵坐标的解读 str1="f3" str2="e9" x=abs(str1[0]-str2[0]) y=abs(str1[1]-str1[1]) 如果x ...
- HDU 3046 Pleasant sheep and big big wolf(最小割)
HDU 3046 Pleasant sheep and big big wolf 题目链接 题意:一个n * m平面上,1是羊.2是狼,问最少要多少围墙才干把狼所有围住,每有到达羊的路径 思路:有羊和 ...
- Effective JavaScript Item 36 实例状态仅仅保存在实例对象上
本系列作为EffectiveJavaScript的读书笔记. 一个类型的prototype和该类型的实例之间是"一对多"的关系.那么,须要确保实例相关的数据不会被错误地保存在pro ...
- 达内TTS6.0课件oop_day02
- Android采用HttpClient下载图片
在上一章中谈到Android采用HttpURLConnection下载图片,本章使用HttpClient下载图片 HttpURLConnection与HttpClient的差别: HttpClient ...
- android 强制设置横屏 判断是横屏还是竖屏
判断activity 是横屏还是竖屏 方法 1: //根据设备配置信息 Configuration cf= this.getResources().getConfiguration(); //获取设 ...
- DataReader转泛型
实体类的字段类型要和数据库一致,不然可能会出现错误. /// <summary> /// DataReader转泛型 /// </summary> /// <typepa ...
- C# 创建文件时,文件夹不存在,如何自动创建文件夹
c# 创建文件时怎么创建文件夹?strhtml=......StreamWriter sw=new StreamWriter("D:/test/1.aspx",false);sw. ...