zoukankan      html  css  js  c++  java
  • Array与NSArray关系

     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

  • 相关阅读:
    Block定制开发小记
    三个方法解决error: use of moved value
    Rust踩坑日记
    动态竞争
    求数组差/交集函数-php数组函数(二)
    深度完整的了解MySQL锁
    PHP 结合前端 ajax 爬取网站信息后, 向指定用户发送指定短信;
    Nginx配置 隐藏入口文件index.php
    如何用纯 CSS 创作一个按钮文字滑动特效
    Laravel学习:请求到响应的生命周期
  • 原文地址:https://www.cnblogs.com/feng9exe/p/9432748.html
Copyright © 2011-2022 走看看