您的位置:首页 > 其它

Array与NSArray关系

2017-05-01 21:43 155 查看
   


 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数据。

 

 

 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Array NSArray 关系