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

Array与NSArray关系的更多相关文章

  1. Python list和 np.Array 的转换关系

    一.List转String 1.str list转 string a_list = ["h","e","l","l",& ...

  2. Swfit 里 Array(五)和 NSArray 转换

     只看 Swift Array 到 NSArray Array 里的源代码 extension Array { @inlinable public // @SPI(Foundation) func ...

  3. 【IOS 开发】Objective-C Foundation 框架 -- 字符串 | 日期 | 对象复制 | NSArray | NSSet | NSDictionary | 谓词

    一. 字符串 API 1. NSString 用法简介 (1) NSString API 介绍 NSString 功能 : -- 创建字符串 : 使用 init 开头的实例方法, 也可以使用 Stri ...

  4. NSString和NSMutableString常用方法+NSArray常用代码 (转)

    常见的NSString和NSMutableString方法: NSString方法: [plain] view plaincopy   +(id) stringWithContentsOfFile:p ...

  5. objective-c系列-NSArray

    OC数组NSArray 对比         c数组              和       oc数组对象(指针) 定义         int array[10];              NS ...

  6. IOS - Objective-C NSArray和NSMutableArray的详解 使用

    原文地址:http://blog.csdn.net/totogo2010/article/details/7729377 Objective-C的数组比C++,Java的数组强大在于,NSArray保 ...

  7. iOS中--NSArray调用方法详解 (李洪强)

    下面的例子以     NSArray *array = [NSArray arrayWithObjects:@"wendy",@"andy",@"to ...

  8. iOS - Swift Array 数组

    前言 public struct Array<Element> : CollectionType, MutableCollectionType, _DestructorSafeContai ...

  9. Objective-C:Foundation框架-常用类-NSArray

    NSArray是用来存储对象的有序列表(NSSet是没有顺序的),它是不可变的.NSArray不能存储C语言中的基本数据类型,如int\float\enum\struct等,也不能存储nil.其用法如 ...

随机推荐

  1. web 开发之js---js 多线程编程

    AJAX 开发中的难题 试试多线程编程 想了解更多 有关作者   转载注明出处:http://www.infoq.com/cn/articles/js_multithread 虽然有越来越多的网站在应 ...

  2. 《ASP.NET4 从入门到精通》学习笔记4

    第4部分诊断与插件 刚開始看这章的时候,真实一头雾水.不知道在讲什么.只是看了关于http pipeline之后.才了解相关说明. 因此对于这一章的学习,建议各位首先看看http pipeline然后 ...

  3. 抽象类(abstract class)和接口(interface)有什么异同?

    相同点: 1.抽象类和接口都不能被实例化,但可以定义抽象类和接口类型的引用. 2.一个类如果继承了抽象类和接口,必须要对其中的抽象方法全部实现.(接口中方法默认的是public abstract修饰的 ...

  4. 【bzoj4245】[ONTAK2015]OR-XOR

    利用前缀和选m个区间等价于选m个数 从最高位开始找,如果这一位至少有m个0,则可以为0,该位为1的后面就不可以选了. 还要注意,最后一个数如果该位为1,那么这一位必须为1,然后要从62开始枚举,而不是 ...

  5. HNOI模拟 Day3.23

    一.拓扑(top)[ 题目描述]:给你一个有向二分图,求他的拓扑序列的个数.[ 输入]:第一行两个数 N,M,表示点数和边数.接下来 M 行每行两个数 a,b,表示 a 向 b 有一条有向边.[ 输出 ...

  6. 安装完Anaconda python 3.7,想使用python3.6方法

    cmd使用命令: conda create -n py36 python=3.6 anaconda 安装好后,会有提示: To activate this environment, use:# > ...

  7. 使用inet_ntoa() 时编译提示错误:

    char*inet_ntoa(struct in_addr in)将一个IP转换成一个互联网标准点分格式的字符串. 我把 inet_ntoa 需要的头文件加上去:    #include <sy ...

  8. 13.Ext.extend用法以及代码解读

    转自:http://www.blogjava.net/dragonshrimp/archive/2008/03/01/183060.html Ext.extend用法以及代码解读 概述 Ext.ext ...

  9. Java实现二叉树遍历

    参考资料: http://blog.csdn.net/wuwenxiang91322/article/details/12231657 环境: Java: jdk1.8.0_91 import jav ...

  10. python/shell脚本报异常^M: bad interpreter: No such file or directory

    问题:在Windows写了一python脚本,上传Linux服务器执行,报异常*****^M: bad interpreter: No such file or directory 原因:window ...