//**********************
//
// Swift调用OC之NSArray
//
// 1.NSArray与Array的互相转换:
// 2.NSArray初始化
// 3.NSArray的常用属性和方法
// --获取成员个数
// --获取数组第一个元素
// --获取数组最后一个元素
// --获取指定区间的子数组:objectsAtIndexes方法
// --NSArray查询指定元素是否存在,返回Bool
// --Array 查询指定元素是否存在,返回Bool
// --NSArray查找的同时获得元素索引
// --Array 查找的同时获得元素索引
//
//**********************
import Foundation
//==========NSArray与Array的互相转换==========
let array1: [Int] = [1,2,3,4]
let nsArray1: NSArray = array1
let swiftArray1 = nsArray1 as [Int]
//可以将任一NSArray对象转换成Array,因为所有OC对象都是AnyObject类型
let array2: [AnyObject] = [4,2,1,5,3,"happy"]
let nsArray2: NSArray = array2
var swiftArray2 = nsArray2 as [AnyObject]
//转成swift数组后可以用swift数组的方法
swiftArray2 += [8,9]
//NSArray是静态数组,如需修改成员,要使用动态NS数组NSMutableArray
var swiftArray3: [Int] = [1,2,3,4]
var mutableArray = NSMutableArray(array: swiftArray3)
mutableArray.removeLastObject()
//========== NSArray初始化 ==========
let swiftArray4 = [1,2,3,4]
let nsArray401 : NSArray = swiftArray4
let nsArray402 = NSArray(array: swiftArray4)
let nsArray403 = swiftArray4 as NSArray
//========== NSArray和Array的常用属性和方法 ==========
//获取成员个数
swiftArray4.count
nsArray401.count
//获取数组第一个元素
swiftArray4.first //{Some 1}
nsArray401.firstObject //{Some 1}
nsArray401.firstObject! //1
//获取数组最后一个元素
swiftArray4.last
swiftArray4[swiftArray4.count-1]
nsArray401.lastObject
nsArray401.objectAtIndex(nsArray401.count-1)
nsArray401[nsArray401.count-1]
//获取指定区间的子数组:objectsAtIndexes方法
let range001 = NSRange(location: 0, length: 2)
let indexSet = NSIndexSet(indexesInRange:range001)
nsArray401.objectsAtIndexes(indexSet) //[1, 2]
var i = 0, j = 1
swiftArray4[i...j] //[1, 2]
//NSArray查询指定元素是否存在,返回Bool
nsArray401.containsObject(3) // true
nsArray401.containsObject("3") // false
//Array查询指定元素是否存在,返回Bool
contains(swiftArray4, 3)
//NSArray查找的同时获得元素索引
i = 1
let index001 = nsArray401.indexOfObject(i)
ifindex001 == NSNotFound {
println("index of \(i)not found")
}else{
println("index of \(i)is \(index001)") //index of 1 is 0
}
//Array查找的同时获得元素索引
find(swiftArray4, 1) //{Some 0}
find(swiftArray4, 1)! //0