Ошибка приведения из (Любого хешируемого Любого) в Swift к NSMutableDictionary в Задаче C - PullRequest
0 голосов
/ 26 июня 2018

У меня есть метод Objective C, который ожидает, что переданные ему параметры имеют тип NSMutableDictionary. У меня есть другой файл Swift и метод Swift, из которого мне нужно передать структуру, которая имеет тип (AnyHashable: Any) (), в мой метод Objective C, который нуждается в том же в формате NSMutableDictionary. Я пробовал кастинг и другие подходы, но не смог найти ответ.

// Метод Objective C принадлежит классу UserLogin

    -(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.

1 Ответ

0 голосов
/ 26 июня 2018

Словари Swift являются неизменяемыми, поэтому вы не можете просто привести словарь Swift к NSMutableDictionary.

В идеале loginWithUserData ожидал бы NSDictionary, а не NSMutableDictionary; неуместно, чтобы функция изменяла словарь. Если тип параметра NSDictionary, вы все равно можете передать NSMutableDictionary.

Если вы не можете изменить функцию Objective-C, вам нужно создать NSMutableDictionary в Swift:

var data = NSMutableDictionary()
...