您的位置:首页 > 移动开发 > Swift

Swift3的Dictionary和OC的NSDictionary关系

2017-05-08 00:00 399 查看




在Foundation框架中提供一种字典集合,它是由“键-值”对构成的集合。键集合不能重复, 值集合没有特殊要求。键和值集合中的元素可以是任何对象,但是不能是nil。Foundation框架字典类也分为NSDictionary不可变字典和NSMutableDictionary可变字典。

NSDictionary与Dictionary之间的关系如同NSArray与Array之间的关系,Swift在 层能够将它们自动地桥接起来,一个NSDictionary对象桥接之后的结果是[NSObject : AnyObject]字典(值为NSObject类型,键为AnyObject类型的Dictionary字典)。

1 | import Foundation
2 | let keyStr : NSString = "one two three four five"
3 | let keys : NSArray = keyStr.components(separatedBy: " ")
4 | let valueStr : NSString = "swift Object-C java C PHP"
5 | let values : NSArray = valueStr.components(separatedBy: " ")
6 | let foundationDict : NSDictionary = NSDictionary(objects:values as [AnyObject], forKeys:keys as! [NSCopying])
7 | let swiftDict : Dictionary = foundationDict as Dictionary
8 | print("字典:\(swiftDict.description)")
9 | let value: AnyObject? = swiftDict["three"]
10 | print("threeValue:\(value!)")
11 | for (key, value) in swiftDict {
12 | print("key:\(key) - value:\(value)")
13 | }
运行结果如下:

字典:[one: swift, five: PHP, three: java, two: Object-C, four: C]

threeValue:java

key:one - value:swift

key:five - value:PHP

key:three - value:java

key:two - value:Object-C

key:four - value:C

上述代码中,第1行是引入Foundation。第6行代码声明并初始化NSDictionary字典,第7行代码是NSDictionary字典赋值给Dictionary字典,这个过程也发生了类型转换,不仅是NSDictionary 到Dictionary的转换,而且它们的内部元素也发生了转换。

第10行代码是从Dictionary字典取three键对应的值,它的类型是可选的AnyObject类型,这是因为有可能取不到这个值。第11行代码是遍历Dictionary字典键和值集合。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息