Swift字典类
在Foundation框架中提供一种字典集合,它是由“键-值”对构成的集合。键集合不能重复,值集合没有特殊要求。键和值集合中的元素可以是任何对象,但是不能是nil。Foundation框架字典类也分为NSDictionary不可变字典和NSMutableDictionary可变字典。
一、NSDictionary类
NSDictionary有很多方法和属性,下面总结其常用的方法和属性。
initWithDictionary: 构造器,通过Swift的Dictionary创建NSDictionary对象。
initWithObjects:forKeys: 构造器,通过键集合和值集合创建NSDictionary对象。
count 字典集合的长度。
objectForKey: 通过键获得值对象。
allKeys: 返回所有键集合。
下面看NSDictionary数组的示例代码:
- import Foundation
- let keyString : NSString = "one two three four five" ①
- var keys : NSArray = keyString.componentsSeparatedByString(" ") ②
- let valuestring : NSString = "alpha bravo charlie delta echo" ③
- var values : NSArray = valuestring.componentsSeparatedByString(" ") ④
- vardict : NSDictionary = NSDictionary(objects: keys, forKeys:values) ⑤
- NSLog("%@", dict.description) ⑥
- varvalue:NSString = dict.objectForKey("three") as NSString ⑦
- NSLog("three = %@", value)
- varkys = dict.allKeys ⑧
- for item : AnyObject in kys { ⑨
- var key = item as NSString
- NSLog("%@ - %@", key, dict.objectForKey(key) as NSString)
- }
上述代码第①行和第③行代码是NSString字符串,字符串由单词和空格组成。第②行和第④行代码使用空格分割字符串,返回类型是NSArray数组。
第⑤行代码实例化NSDictionary对象,objects参数是值数组values,forKeys参数是。第⑥行代码description属性是获得字典的内容。第⑦行代码是通过objectForKey方法读取键对应的值,并且转换为NSString类型。
第⑧行代码dict.allKeys是获得所有的键集合kys,第⑨行代码是遍历键集合kys。
输出结果如下:
- 2014-07-06 20:19:07.274 PlaygroundStub_OSX[4110:303] {
- five = echo;
- four = delta;
- one = alpha;
- three = charlie;
- two = bravo;
- }
- 2014-07-06 20:19:07.281 PlaygroundStub_OSX[4110:303] three = charlie
- 2014-07-06 20:19:07.296 PlaygroundStub_OSX[4110:303] one - alpha
- 2014-07-06 20:19:07.300 PlaygroundStub_OSX[4110:303] five - echo
- 2014-07-06 20:19:07.305 PlaygroundStub_OSX[4110:303] three - charlie
- 2014-07-06 20:19:07.308 PlaygroundStub_OSX[4110:303] two - bravo
- 2014-07-06 20:19:07.313 PlaygroundStub_OSX[4110:303] four - delta
二、NSMutableDictionary类
NSMutableDictionary是NSDictionary的子类,它有很多方法和属性,下面总结其常用的方法和属性。
-setObject:forKey: 通过键和值。
-removeObjectForKey: 按照键移除值。
下面看NSDictionary数组的示例代码:
- import Foundation
- var mutable : NSMutableDictionary = NSMutableDictionary() ①
- // add objects
- mutable.setObject("Tom", forKey: "tom@jones.com") ②
- mutable.setObject("Bob", forKey: "bob@dole.com")
- NSLog("%@", mutable.description)
- var keys = mutable.allKeys
- for item : AnyObject in keys {
- var key = item as NSString
- NSLog("%@ - %@", key, mutable.objectForKey(key) as NSString)
- }
上述代码第①行是实例化NSMutableDictionary,第②行代码是通过setObject方法添加键和值。
输出结果如下:
- 2014-07-06 20:42:11.596 PlaygroundStub_OSX[4332:303] {
- "bob@dole.com" = Bob;
- "tom@jones.com" = Tom;
- }
- 2014-07-06 20:42:11.605 PlaygroundStub_OSX[4332:303] bob@dole.com - Bob
- 2014-07-06 20:42:11.608 PlaygroundStub_OSX[4332:303] tom@jones.com – Tom
三、NSDictionary与Dictionary之间的关系
NSDictionary与Dictionary之间的关系如同NSArray与Array之间的关系,Swift在底层能够将它们自动地桥接起来,一个NSDictionary对象桥接之后的结果是[NSObject : AnyObject]字典(值为NSObject 类型,键为AnyObject 类型的Dictionary字典)。
下面我们看一个使用Dictionary和NSDictionary的示例:
- import Foundation ①
- let keyString : NSString = "one two three four five"
- let keys : NSArray = keyString.componentsSeparatedByString(" ")
- let valueString : NSString = "alpha bravo charlie delta echo"
- let values : NSArray = valueString.componentsSeparatedByString(" ")
- let foundationDict : NSDictionary = NSDictionary(objects:values, forKeys:keys) ②
- let swiftDict : Dictionary = foundationDict ③
- println(swiftDict.description)
- let value: AnyObject? = swiftDict["three"] ④
- println("three = \(value)")
- for (key, value) in swiftDict { ⑤
- println ("\(key) - \(value)")
- }
代码第①行是引入Foundation。第②行代码声明并初始化NSDictionary字典,第③行代码是将NSDictionary字典赋值给Dictionary字典,这个过程也发生了类型转换,不仅是NSDictionary到Dictionary的转换,而且它们的内部元素也发生了转换。
第④行代码是从Dictionary字典取three键对应的值,它的类型是可选的AnyObject类型,这是因为有可能取不到这个值。第⑤行代码是遍历Dictionary字典键和值集合。
欢迎关注智捷iOS课堂微信公共平台
Swift字典类的更多相关文章
- 站在OC的基础上快速理解Swift的类与结构体
阅读此文章前,您已经有一定的Object-C语法基础了!) 2014年,Apple推出了Swift,最近开始应用到实际的项目中. 首先我发现在编写Swift代码的时候,经常会遇到Xcode不能提示,卡 ...
- swift 构建类
参开 http://blog.csdn.net/chelongfei/article/details/49784633 在 Swift 中, 类的初始化有两种方式, 分别是 Designated In ...
- [转载]python中将普通对象作为 字典类(dict) 使用
目前我知道的有两种方法: 1 定义的类继承dict类 例如 class A(dict): pass a = A() a['name'] = 12 2 给自定义的类添加 __setitem__() __ ...
- C#中的Dictionary字典类介绍
Dictionary字典类介绍 必须包含名空间System.Collection.Generic Dictionary里面的每一个元素都是一个键值对(由二个元素组成:键和值) 键必须是 ...
- swift字典集合-备
Swift字典表示一种非常复杂的集合,允许按照某个键来访问元素.字典是由两部分集合构成的,一个是键(key)集合,一个是值(value)集合.键集合是不能有重复元素的,而值集合是可以重复的,键和值是成 ...
- Page_Load接收随机参数放到字典类中
Page_Load接收随机参数放到字典类中,可以用作签名.普通的接收url的参数可以用作下面这种模式: int appid =Convert.ToInt32(param["appid&qu ...
- 编程写一个方法时,注意方法中传参数的数量最好不要超过5个,超过5个怎么办?可以用struct或class,或一个字典类
图 1 一.从图1发现了什么问题呢? 答案:1.参数传的的太多了:2.另外注释也没写好. 说明:一个方法中,传参数的数量最好不要超过5个. 应该采用:struct或class,或一个字典类都行.其中 ...
- 孤荷凌寒自学python第十一天初识Python的字典类
孤荷凌寒自学python第十一天初识Python的字典类 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) Python的字典其实是一张二维对照表 下面举例说明: 键名Key 姓名 性别 身高 ...
- Swift学习——类的定义,使用,继承,构造等(五)
Swift学习--类的定义,使用.继承,构造等(五) 类的使用说明 1 使用class和类名来创建一个类名,比如: class student 2 类中属性的声明和常量和变量一样,唯一的差别就是他们的 ...
随机推荐
- Cocos2d-x——CocosBuilder官方帮助文档翻译2 多分辨率支持
Working with Multiple Resolutions 多分辨率设置 A common scenario when creating apps or games is to target ...
- C++ 预编译头文件
1.解决什么问题? C++ 编译器是单独,分别编译的,每个cpp文件,进行预编译(也就是对#include,define 等进行文本替换),生成编译单元.编译单元是一个自包含文件,C++编译器对编译单 ...
- Codeforces Gym 100286B Blind Walk DFS
Problem B. Blind WalkTime Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hust.edu.cn/vjudge/cont ...
- C#实现汉诺塔问题
汉诺塔的由来:汉诺塔是源自印度神话里的玩具.上帝创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上安大小顺序摞着64片黄金圆盘.上帝命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上.并且 ...
- null和空 not null
所谓的NULL就是什么都没有,连\0都没有,\0在字符串中是结束符,但是在物理内存是占空间的,等于一个字节,而NULL就是连这一个字节都没有.在 数据库里是严格区分的,任何数跟NULL进行运算都是NU ...
- MySQL 5.7: Enhanced Multi-threaded slaves
http://geek.rohitkalhans.com/2013/09/enhancedMTS-deepdive.html 科学上网 Introduction Re-applying binar ...
- UNIX标准化及实现之限制
前言 UNIX系统实现定义了很多幻数和常量,其中有很多已被硬编码(关于硬编码和软编码:http://www.cnblogs.com/chenkai/archive/2009/04/10/1432903 ...
- 忘记redhat linux root密码怎么办
自己VM虚拟机里安装redhat linux root密码忘了,刚开始想重新安装,但是后来想到还有linux有一个single模式,使用single可以直接进入字符界面,然后修改: 启动vm虚拟机,启 ...
- Helpers\RainCaptcha
Helpers\RainCaptcha This class can validate CAPTCHA images with RainCaptcha. It can generate an URL ...
- DNA比对
[编程题](满分27分) 脱氧核糖核酸即常说的DNA,是一类带有遗传信息的生物大分子.它由4种主要的脱氧核苷酸(dAMP.dGMP.dCMT和dTMP)通过磷酸二酯键连接而成.这4种核苷酸可以分别记为 ...