NSArray与Array之间的关系如同NSString与String之间的关系,NSArray是类类型,而Array是结构体类型,一个是引用类型,一个是值类型,它们是怎样实现无缝转换的呢?Swift在底层能够将它们自动地桥接起来,一个NSArray对象桥接之后的结果是[AnyObject]数组(保存AnyObject元素的Array数组)。

下面我们来看一个使用Array和NSArray的例子

1 |  let ocStr : NSString = "Swift is easy"

2 |  let strArray : NSArray = ocStr.components(separatedBy: " ")

3 |  let swiftArray = strArray

4 |  for item in strArray {

5 |      print(item) //输出类型是NSString

6 |  }

7 |  for item in strArray as! [String] {

8 |      print(item) //输出类型是String

9 |  }

10 |  for item in swiftArray {

11 |      print(item) //输出类型是AnyObject

12 |  }

13 |  for item in swiftArray as! [String]{

14 |      print(item) //输出类型是String

15 |  }

上述代码,第1行代码声明并初始化Object-C中NSString类型的ocStr,第2行代码使用NSString的componentsSeparatedByString方法,该方法可以使用指定的字符分隔字符串,返回Object-C中NSArray数组strArray。第3行代码是将NSArray数组赋值给Swift的Array数组swiftArray,这个过程也发生了类型转换,不仅是NSArray到Array的转换,而且它们的内部元素也从NSString转换为AnyObject。

第4行代码是遍历strArray集合,第5行代码输出的是NSString数据。第7行代码是将数组strArray通过as!转换为[String]数组,然后遍历集合,第8行代码输出的是String类型的数据。第11行代码输出的是AnyObject数据。第14代码输出的是String数据。

https://blog.csdn.net/bwf_erg/article/details/71075591

最新文章

  1. iOS开发系列--网络开发
  2. Hbuilder开发HTML5 APP之打开新页面
  3. CentOS 6.6下Redis安装
  4. .NET生成静态页面例子
  5. Nginx 配置指令的执行顺序(六)
  6. ##DAY5 UIControl及其子类
  7. sql简单实用的统计汇总案例参考
  8. js中内置有对象
  9. FusionCharts使用问题及解决方法(二)-FusionCharts常见问题大全
  10. UVa 10911 - Forming Quiz Teams
  11. 内网转发ngrok的使用
  12. Java8-Collect收集Stream
  13. 如何让div弄成可以输入文字
  14. .NET开源Protobuf-net组件修炼手册
  15. php压力测试工具简单实用方法
  16. 【Java深入研究】3、HashMap源码解析(jdk 1.7)
  17. 常用js对象、数组、字符串的方法
  18. 虚拟机内存复用技术的比较(XEN系统)
  19. omnibus gitlab-ce安装
  20. maven 编译解决jdk 版本问题

热门文章

  1. Linux 内核开发 - 内存管理
  2. 扩展gcd求解二元不定方程及其证明
  3. iOS CMSampleBuffer deep copy
  4. spark hadoop 对比 Resilient Distributed Datasets
  5. Delphi属性比对象的域有更强的功能
  6. pandas 绘图 机器学习看特征相关性
  7. 在mac下设置环境变量
  8. 【Beijing WC2012】 冻结
  9. [NOI2004]小H的小屋 贪心
  10. Spark 决策树--回归模型