Swift3的Dictionary和OC的NSDictionary关系
在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关系相关推荐
- OC中NSDictionary常用方法总结
//不可变字典NSDictionary //字典的创建 NSDictionary *dic1=[NSDictionary dictionaryWithObject:@"velue" ...
- OC基础第四讲--字符串、数组、字典、集合的常用方法
OC基础第四讲--字符串.数组.字典.集合的常用方法 字符串.数组.字典.集合有可变和不可变之分.以字符串为例,不可变字符串本身值不能改变,必须要用相应类型来接收返回值:而可变字符串调用相应地方法后, ...
- 【OC】【一秒就会】【collectionView 头部吸住功能】
为什么80%的码农都做不了架构师?>>> 贡献作者 -[XJDomain] 博客XJ: https://my.oschina.net/shengbingli/blog Git ...
- NSString NSArray NSDictionary NSSet 中的部分方法
NSString NSArray NSDictionary NSSet 中的部分方法 //1.init // NSString *s1 = [[NSString alloc]init] ...
- OC中JSON解析与XML解析
文章目录 ###JSON JSON是一种轻量级的数据格式,一般用于数据交互: 服务器返回给客户端的数据,一般都是JSON格式或者XML格式(文件下载除外). JSON的格式很像OC中的字典和数组,标准 ...
- 黑马程序员——OC语言基本语法知识(一)
*** 封装 *** 一. set方法 通过 指针->成员变量名 方式给成员变量赋值具有危险性, 可能被赋值为不合理的数值.不允许通过指针直接修改成员变量, 就要去掉@public. 通过方法来 ...
- 24、JSON与OC互相转化
一. JSON: 1. 01.JSON是一种轻量级的数据格式,一般用于数据交互 02.服务器返回给客户端的数据,一般都是JSON格式活着XML格式(文件下载除外) JSON的格式很像OC中的字典和数组 ...
- oc总结 --oc基础语法相关知识
m是OC源文件扩展名,入口点也是main函数,第一个OC程序: #import <Foundation/Foundation.h> int main(int argc, const cha ...
- runtime模型与字典互转
原文出自:标哥的技术博客 前言 在开发中必不可少的模型与字典互转,但是一直以来都是使用他人的库,从来没有研究其原理或者说深究其所以然.现在,在这里我们一起来学习通过runtime完成模型与字典的互转. ...
最新文章
- 『Windows Tips』Windows 自带屏幕截图的使用
- android 清空canvas部分内容_Android自定义View实现圆形头像效果
- Android接收短信
- Codeforces - 814B - An express train to reveries - 构造
- 20145202 《信息安全系统设计基础》第6周学习总结(2)
- sh linux 一组命令,linux中的组命令和子shell
- java编程环境_java开发环境
- IDW空间插值法matlab,基于IDW对PM2.5进行空间插值及可视化
- 中国行政区划shp地图数据-2022最新数据预览图
- 【matlab 图像处理】图像锐化
- Java面向对象知识点总结
- 【华人学者风采】蔡达成 新加坡国立大学
- TensorRT学习(1):通过pth生成wts文件
- 网站优化之robots文件详解
- svchost 总是占用网速 一招见效(实测)
- 网络钓鱼仍然是安全行业的祸害
- 使用cpolar建立固定的SSH隧道
- 如何借助企业微信运营管理用户?
- studio 报错Error: Activity class
- WEB开发技能树-JavaScript-DOM