Aditya Raj Gupta
Aditya Raj Gupta

Reputation: 51

How to convert NSArray into Swift Array in swift 3

I have two array

var arr1 = [NSArray]()
var arr2 = [String]()

And I want to convert NSArray into String Array I am using

arr2 = arr1 as! [String]

But it giving me error :-

'NSString' is not a subtype of 'NSArray'

Is there any other method to convert?

Upvotes: 3

Views: 28699

Answers (1)

Rajan Maheshwari
Rajan Maheshwari

Reputation: 14571

var arr1 = [NSArray]() 

is a swift array of NSArray. You are using wrong syntax for NSArray

In order to convert NSArray to swift Array

Use the proper syntax:

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)
}

It will print

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

Another way

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

no forced casting required.

Upvotes: 19

Related Questions