将 Swift 中的 (Any hashable Any) 中的错误转换为 Objective C 中的 NSMutableDictionary

Cast error from (Any hashable Any) in Swift to NSMutableDictionary in Objective C

我有一个 Objective C 方法,它期望传递给它的参数是 NSMutableDictionary 类型。我有另一个 Swift 文件和一个 Swift 方法,我需要从中将类型为 (AnyHashable: Any)() 的结构传递给我需要相同的 Objective C 方法在 NSMutableDictionary 格式。我试过铸造和其他方法,但我找不到答案。

//Objective C 方法属于 UserLogin class

    -(void)loginWithUserData:(NSMutableDictionary *)userLoginData{
      // Do something
      //Get data from Swift file here
     }

//Swift 函数,我需要从中调用 Objective C 方法并传递数据

    var data = [AnyHashable: Any]()
    var ObjClass = UserLogin()
    ObjClass.loginWithUserData(userLoginData: data)

这应该如何转换为?我正在使用 Swift 3.

Swift 字典是不可变的,因此您不能简单地将 Swift 字典转换为 NSMutableDictionary.

理想情况下,loginWithUserData 会期望 NSDictionary,而不是 NSMutableDictionary;改变字典的功能不是好的设计。如果参数类型是 NSDictionary 那么你仍然可以传递 NSMutableDictionary.

如果您无法更改 Objective-C 函数,那么您需要在 Swift 中创建一个 NSMutableDictionary:

var data = NSMutableDictionary()