Search code examples
iosswiftdictionarycastingnsmutabledictionary

cast from [String:AnyObject] to unrelated type NSMutableDictionary always fails Warning


Code is working, but how do I silent this warning that keeps on appearing every time?

let parentView = self.parentViewController as! SBProfileViewController
parentView.savedDetailsModel = SBSavedUserModel(data:responseObject["data"].dictionaryObject! as! NSMutableDictionary)

cast from '[String:AnyObject]' to unrelated type 'NSMutableDictionary' always fails Warning

SavedUserModel stores saved information:--

class SBSavedUserModel : NSObject { 
var userId : String!
var firstName : String!
var lastName : String!
var imageBase64 : String!

required init ( data : NSMutableDictionary) {
    self.userId =  data.objectForKey("userId") as! String
    self.firstName = data.objectForKey("fName") as! String
    self.lastName = data.objectForKey("lName") as! String
    self.imageBase64 = data.objectForKey("image") as! String
}

Solution

  • Try replacing

    responseObject["data"].dictionaryObject! as! NSMutableDictionary

    with this:

    NSMutableDictionary(dictionary: responseObject["data"].dictionaryObject!)

    You could easily cast it into a NSDictionary, but for some reason when you want a NSMutableDictionary, you have to initialize a new one with NSMutableDictionary(dictionary:)

    Edit: see the comment on this question by @Tommy for why this is necessary.