' - [__ NSCFDictionary setObject:forKey:]:mutating方法发送到不可变对象'导致崩溃

tec*_*erd 2 swift

我将NSUserDefault中的UserInfo Dictionary指定为NSMutableDictionary.现在我的dicInfo是可变字典,但它包含的对象是不可变的.因此,当我试图替换这些值时,它会导致崩溃.我附上描述崩溃报告的图像.如果有任何解决方案,如何将可变字典的内部对象转换为可变字典.

谢谢 在此输入图像描述

nhg*_*rif 9

NSDictionary类符合NSMutableCopying协议.因此,我们可以调用mutableCopy方法NSDictionary来获取NSMutableDictionary对象的副本.

let dicInfo = userSharedDefaults?.objectForKey(UserDefaultKey.kUserBasicInfo) as? NSDictionary

let mutableDictionary = dicInfo?.mutableCopy
Run Code Online (Sandbox Code Playgroud)

在Swift中,我们可能需要将其转换为正确的类型:

let mutableDictionary = dicInfo?.mutableCopy as? NSMutableDictionary
Run Code Online (Sandbox Code Playgroud)