在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字典键和值集合。

Swift3的Dictionary和OC的NSDictionary关系相关推荐

  1. OC中NSDictionary常用方法总结

    //不可变字典NSDictionary //字典的创建 NSDictionary *dic1=[NSDictionary dictionaryWithObject:@"velue" ...

  2. OC基础第四讲--字符串、数组、字典、集合的常用方法

    OC基础第四讲--字符串.数组.字典.集合的常用方法 字符串.数组.字典.集合有可变和不可变之分.以字符串为例,不可变字符串本身值不能改变,必须要用相应类型来接收返回值:而可变字符串调用相应地方法后, ...

  3. 【OC】【一秒就会】【collectionView 头部吸住功能】

    为什么80%的码农都做不了架构师?>>>    贡献作者 -[XJDomain] 博客XJ:  https://my.oschina.net/shengbingli/blog Git ...

  4. NSString NSArray NSDictionary NSSet 中的部分方法

    NSString NSArray NSDictionary NSSet 中的部分方法 //1.init     //    NSString  *s1 = [[NSString alloc]init] ...

  5. OC中JSON解析与XML解析

    文章目录 ###JSON JSON是一种轻量级的数据格式,一般用于数据交互: 服务器返回给客户端的数据,一般都是JSON格式或者XML格式(文件下载除外). JSON的格式很像OC中的字典和数组,标准 ...

  6. 黑马程序员——OC语言基本语法知识(一)

    *** 封装 *** 一. set方法 通过 指针->成员变量名 方式给成员变量赋值具有危险性, 可能被赋值为不合理的数值.不允许通过指针直接修改成员变量, 就要去掉@public. 通过方法来 ...

  7. 24、JSON与OC互相转化

    一. JSON: 1. 01.JSON是一种轻量级的数据格式,一般用于数据交互 02.服务器返回给客户端的数据,一般都是JSON格式活着XML格式(文件下载除外) JSON的格式很像OC中的字典和数组 ...

  8. oc总结 --oc基础语法相关知识

    m是OC源文件扩展名,入口点也是main函数,第一个OC程序: #import <Foundation/Foundation.h> int main(int argc, const cha ...

  9. runtime模型与字典互转

    原文出自:标哥的技术博客 前言 在开发中必不可少的模型与字典互转,但是一直以来都是使用他人的库,从来没有研究其原理或者说深究其所以然.现在,在这里我们一起来学习通过runtime完成模型与字典的互转. ...

最新文章

  1. 『Windows Tips』Windows 自带屏幕截图的使用
  2. android 清空canvas部分内容_Android自定义View实现圆形头像效果
  3. Android接收短信
  4. Codeforces - 814B - An express train to reveries - 构造
  5. 20145202 《信息安全系统设计基础》第6周学习总结(2)
  6. sh linux 一组命令,linux中的组命令和子shell
  7. java编程环境_java开发环境
  8. IDW空间插值法matlab,基于IDW对PM2.5进行空间插值及可视化
  9. 中国行政区划shp地图数据-2022最新数据预览图
  10. 【matlab 图像处理】图像锐化
  11. Java面向对象知识点总结
  12. 【华人学者风采】蔡达成 新加坡国立大学
  13. TensorRT学习(1):通过pth生成wts文件
  14. 网站优化之robots文件详解
  15. svchost 总是占用网速 一招见效(实测)
  16. 网络钓鱼仍然是安全行业的祸害
  17. 使用cpolar建立固定的SSH隧道
  18. 如何借助企业微信运营管理用户?
  19. studio 报错Error: Activity class
  20. WEB开发技能树-JavaScript-DOM

热门文章

  1. 运维高级lianxi
  2. Scala基础练习题1
  3. 360日历精选弹窗如何关闭?
  4. 百度收录批量查询_网站内页被批量降权如何恢复?
  5. WordPress加速缓存插件WP Super cache安装方法及使用技巧
  6. ubuntu 删除自带的游戏
  7. 全解析jQuery插件开发!很好很强大!
  8. seo关键词选择-SEO关键词选择分析软件
  9. 微信小程序 RTMP 音视频 通话 ffmpeg_WebRTC与微信小程序音视频互通方案设计与实现...
  10. 红杉资本决定重组-摆脱传统风投模式,延长投资期限和降低管理费