您的位置:首页 > 其它

Array与NSArray关系

2017-05-01 00:00 330 查看




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 关系