swift可无缝的将oc中的NSArray和NSMubableArray转换为swift对象直接使用.不过在swift中本身也有个Array.他们之间还有
不少的区别.
1.swift找那个的Array是结构体,而oc中的两个数组是类
2.swift array的声明方式比较灵活
let arr1 :[String] = []
let arr2 = [String]()
let arr3 = Array<String>()
let arr4:[String] = [String]()
let arr5:Array = Array<String>()必须带泛型
以上几种种方式可以声明空的Array,只要把 let 改为 var就可以调用增删改等修改数组内容的方法.
而NSArray和NSMutableArray,前面的类只能操作一些只读的方法,后者可以修改数组内容,而且构造没有泛型.
也可以使用:
let arr1 = []
let arr2:NSArray = []
let arr3:NSMutableArray = []
let arr4 = NSArray()不能带泛型
特别注意:
在swift中对于NSArray和NSMutableArray申明变量的时候用var,let其实都是可以的,不过编译器推荐都用let
let arr = [],这种方法声明的方式相当于let arr = NSArray()
3.let 的Array和NSArray,前者还是可以这IDE中调用append方法,而后者根本没有这些改变数组的方法;
var的Array的改变方法有append(),insert(),NSMubableArray中对应的是insertObject(),addObject()方法名有点长.
4.let/var arr = [1,2]这种有值的数组就是Array.也可以通过构造方法来进行声明.
5.Array可以用泛型,oc的两个数组类没有泛型.swift的可以更规范.当然swift的也可以什么都放,只要不指定泛型.
6.let aa = Array(count: 10,repeatedValue: 0)可以通过这种方式来确定一个确定容量的数组.在oc中则是用类似的是
NSString *strings[3]; NSString *strings[3] = {@"",@"",@""}; NSArray *stringsArray = [NSArray arrayWithObjects:strings count:2];