如何在swift 3中将NSArray转换为Swift数组

Adi*_*pta 2 arrays nsarray ios swift

我有两个阵列

var arr1 = [NSArray]()
var arr2 = [String]()
Run Code Online (Sandbox Code Playgroud)

我想转换NSArray成我正在使用的字符串数组

arr2 = arr1 as![串]

但它给了我错误: -

'NSString' is not a subtype of 'NSArray'
Run Code Online (Sandbox Code Playgroud)

还有其他方法可以转换吗?

Raj*_*ari 12

var arr1 = [NSArray]() 
Run Code Online (Sandbox Code Playgroud)

是一系列快速的NSArray.您使用了错误的语法NSArray

为了转换NSArray为swift数组

使用正确的语法:

var arr1 = NSArray(objects: "a","b","c")

var objCArray = NSMutableArray(array: arr1)

if let swiftArray = objCArray as NSArray as? [String] {

    // Use swiftArray here
    print(swiftArray)
}
Run Code Online (Sandbox Code Playgroud)

它会打印出来

["a", "b", "c"]
Run Code Online (Sandbox Code Playgroud)

其他方式

let swiftArray: [String] = objCArray.compactMap({ $0 as? String })
Run Code Online (Sandbox Code Playgroud)

不需要强制铸造.

  • 不需要`NSMutableArray`,只要`if let ar = arr1 as? [String] {` 应该足够了。 (3认同)