Swift字典类
来源:互联网 发布:淘宝3ds哪家的好 编辑:程序博客网 时间:2024/06/13 21:24
在Foundation框架中提供一种字典集合,它是由“键-值”对构成的集合。键集合不能重复,值集合没有特殊要求。键和值集合中的元素可以是任何对象,但是不能是nil。Foundation框架字典类也分为NSDictionary不可变字典和NSMutableDictionary可变字典。
一、NSDictionary类
count 字典集合的长度。
objectForKey: 通过键获得值对象。
allKeys: 返回所有键集合。
下面看NSDictionary数组的示例代码:
上述代码第①行和第③行代码是NSString字符串,字符串由单词和空格组成。第②行和第④行代码使用空格分割字符串,返回类型是NSArray数组。
第⑤行代码实例化NSDictionary对象,objects参数是值数组values,forKeys参数是。第⑥行代码description属性是获得字典的内容。第⑦行代码是通过objectForKey方法读取键对应的值,并且转换为NSString类型。
第⑧行代码dict.allKeys是获得所有的键集合kys,第⑨行代码是遍历键集合kys。
输出结果如下:
二、NSMutableDictionary类
NSMutableDictionary是NSDictionary的子类,它有很多方法和属性,下面总结其常用的方法和属性。
-setObject:forKey: 通过键和值。
-removeObjectForKey: 按照键移除值。
下面看NSDictionary数组的示例代码:
上述代码第①行是实例化NSMutableDictionary,第②行代码是通过setObject方法添加键和值。
输出结果如下:
三、NSDictionary与Dictionary之间的关系
NSDictionary与Dictionary之间的关系如同NSArray与Array之间的关系,Swift在底层能够将它们自动地桥接起来,一个NSDictionary对象桥接之后的结果是[NSObject : AnyObject]字典(值为NSObject 类型,键为AnyObject 类型的Dictionary字典)。
下面我们看一个使用Dictionary和NSDictionary的示例:
代码第①行是引入Foundation。第②行代码声明并初始化NSDictionary字典,第③行代码是将NSDictionary字典赋值给Dictionary字典,这个过程也发生了类型转换,不仅是NSDictionary到Dictionary的转换,而且它们的内部元素也发生了转换。
一、NSDictionary类
NSDictionary有很多方法和属性,下面总结其常用的方法和属性。
initWithDictionary: 构造器,通过Swift的Dictionary创建NSDictionary对象。
initWithObjects:forKeys: 构造器,通过键集合和值集合创建NSDictionary对象。count 字典集合的长度。
objectForKey: 通过键获得值对象。
allKeys: 返回所有键集合。
下面看NSDictionary数组的示例代码:
import Foundationlet 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 NSStringNSLog("%@ - %@", 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 = charlie2014-07-06 20:19:07.296 PlaygroundStub_OSX[4110:303] one - alpha2014-07-06 20:19:07.300 PlaygroundStub_OSX[4110:303] five - echo2014-07-06 20:19:07.305 PlaygroundStub_OSX[4110:303] three - charlie2014-07-06 20:19:07.308 PlaygroundStub_OSX[4110:303] two - bravo2014-07-06 20:19:07.313 PlaygroundStub_OSX[4110:303] four - delta
二、NSMutableDictionary类
NSMutableDictionary是NSDictionary的子类,它有很多方法和属性,下面总结其常用的方法和属性。
-setObject:forKey: 通过键和值。
-removeObjectForKey: 按照键移除值。
下面看NSDictionary数组的示例代码:
import Foundationvar mutable : NSMutableDictionary = NSMutableDictionary()①// add objectsmutable.setObject("Tom", forKey: "tom@jones.com")②mutable.setObject("Bob", forKey: "bob@dole.com")NSLog("%@", mutable.description)var keys = mutable.allKeysfor item : AnyObject in keys {var key = item as NSStringNSLog("%@ - %@", 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 - Bob2014-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字典键和值集合。
更多内容请关注国内第一本Swift图书《Swift开发指南》
本书交流讨论网站:http://www.51work6.com/swift.php
欢迎加入Swift技术讨论群:362298485
欢迎关注智捷iOS课堂微信公共平台
0 0
- Swift字典类
- Swift字典
- Swift--字典
- Swift-字典
- Swift-字典
- Swift字典
- Swift 字典
- Swift-字典
- Swift字典
- Swift字典
- Swift 字典
- Swift字典
- Swift-字典
- swift字典
- Swift-字典
- Swift 字典
- swift字典
- swift字典
- 数据库SQL小试
- 【hadoop学习】--(1)hadoop安装前准备
- LeetCode-Binary Tree Postorder Traversal
- 后缀数组求最长重复子串
- Android 定位相关技术及会遇到的问题A
- Swift字典类
- 【Leetcode】Plus One
- Android 快速开发系列 ORMLite 框架最佳实践
- 约会专家经典台词
- storm简介
- Android之根据读取SD卡指定后缀名的文件
- 什么原因成就了一位优秀的程序员?
- The Data Scientist's Toolbox
- quartus时序分析文档理解与翻译(4)——创建IO约束