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

3
我有两个数组。
var arr1 = [NSArray]()
var arr2 = [String]()

我想要将NSArray转换为字符串数组

我正在使用

arr2 = arr1 as! [String]

但是它给我一个错误:

'NSString' is not a subtype of 'NSArray'

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

arr1 是 Array<NSArray>(Swift 数组的 NSArray),而不是 NSArray - Bryan Chen
如何转换?你能给些建议吗? - Aditya Raj Gupta
你应该先了解Swift语法... - Tj3n
arr1 是一个数组的数组,而不是字符串的数组。例如,如果 arr1 的第一个元素包含一个 NSArray,其中包含 [1, 2],而第二个元素是 ["abc", "def"]。你想要这个的字符串表示是什么? - Michael
Array(NSArray)将NSArray转换为[Any]。 - cyanide
1个回答

19
var arr1 = [NSArray]() 

这是一个包含 NSArray 的 Swift 数组。您正在使用错误的语法来处理 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)
}

它将会打印

["a", "b", "c"]

另一种方式

let swiftArray: [String] = objCArray.compactMap({ $0 as? String })

无需强制转换。


3
无需使用NSMutableArray,仅使用if let ar = arr1 as? [String] {即可。 - William Hu

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接