Could not cast value of type 'Swift._EmptyArrayStorage' to 'NSMutableArray' in iOS 11, Xcode 9

Viewed 3916

It looks like we can not convert an empty var array in Swift into NSMutableArray in Objective-C.

var adultTravelerModels: [TravelerDataModel] = []
BookDataManger.sharedInstance().arraySelectedAdultPassenager = adultTravelerModels as! NSMutableArray
/* (lldb) po adultTravelerModels
0 elements */

The system version is iOS 11.0, Xcode 9.0.

How can we solve this?

3 Answers

Do like this:

BookDataManger.sharedInstance().arraySelectedAdultPassenager = NSMutableArray(array: adultTravelerModels)

In Swift 4, you can not assign swift empty array to NSMutableArray. But you can construct new NSMutableArray and assign to where required. Like below:

BookDataManger.sharedInstance().arraySelectedAdultPassenager = NSMutableArray(array: adultTravelerModels)

You have to construct a new instance of NSMutableArray.

Related