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. HDU 1796 How many integers can you find(容斥原理+二进制/DFS)

    How many integers can you find Time Limit: 12000/5000 MS (Java/Others)    Memory Limit: 65536/32768 ...

  2. JAVA 学习 IDEA安装及破解

    1.到官网下载安装包 网址:https://www.jetbrains.com/idea/download/#section=windows 选择  “”Ultimate “”这个版本点击“Downl ...

  3. ZOJ 3872 计算对答案的贡献

                                                   D - Beauty of Array Description Edward has an array A ...

  4. 【bzoj2748】[HAOI2012]音量调节

    设F[i][j]表示在第i首歌曲结束后,音量能否刚好为j 转移:F[i][j]=F[i][j-C[i]] or F[i][j+C[i]] 初始化:F[0][beginlevel]=true 最后在所有 ...

  5. libjpeg交叉编译

    下载libjpeg http://libjpeg.sourceforge.net/ 解压tar -zxf jpegsrc.v6b.tar.gz cd jpeg-6b cp /usr/bin/libto ...

  6. Java 过滤器、监听器、拦截器的区别

        原文:http://www.360doc.com/content/10/0601/09/495229_30616324.shtml 1.过滤器 Servlet中的过滤器Filter是实现了ja ...

  7. list集合去重复元素

    //set集合去重,不打乱顺序 public static void main(String[] args){ List<String> list = new ArrayList<S ...

  8. 并不对劲的spoj nsubstr

    题意是求一个字符串每个长度的子串出现次数最多的那个出现了多少次,也就是求每个到根的最长路的right集合最大值 . 先建后缀自动机,然后将每个前缀所在的集合的初值设为1,因为所有前缀的right集合肯 ...

  9. 【HDU 5698】 瞬间移动

    [题目链接] 点击打开链接 [算法] 用f[i][j]表示走到(i,j)这个位置有多少种方案,因为走到(i,j)这个位置,上一步一定在它左上角的矩形中,所以, f(i,j) = sigma( f(x, ...

  10. python-----删除文件到回收站

    python删除文件一般使用os.remove,但这样删是直接删除文件,不删到回收站的,那么想删除文件到回收站怎么办? 这时,就需要使用shell模块了 from win32com.shell imp ...