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

  • 相关阅读:
    Scheduled定时任务的触发规则
    linux设置系统时间为当前网络时间
    idea控制台打印日志出现乱码
    Nginx配置高可用的集群
    Nginx实现负载均衡
    BigDecimal比较大小
    Java调用第三方系统接口获取数据
    sql中主要关键字的执行顺序
    ASP.NET.Core --Jenkins+Docker
    ASP.NET.Core --Swagger+Route
  • 原文地址:https://www.cnblogs.com/feng9exe/p/9432748.html
Copyright © 2011-2022 走看看