Ищу исправление для Swift «неоднозначное использование ‘object (forKey :)'»

#swift #anyobject

#swift #anyobject

Вопрос:

Я унаследовал некоторый код Swift, который пытаюсь скомпилировать.

Следующие две строки генерируют ошибку «Неоднозначное использование object (forKey :)».

 let selectorString: String = (req as AnyObject).object(forKey: "selectorString") as! String
let args = (req as AnyObject).object(forKey: "arguments") as! NSArray
  

Ошибка выделяется req as AnyObject как виновник.

Я обнаружил похожие проблемы в S.O., но, похоже, ни одна из них не решала эту конкретную проблему. Возможно, я что-то пропустил в результатах поиска.

Я надеюсь, что это простое исправление, поэтому любая помощь приветствуется.

Комментарии:

1. Каков тип объекта req перед приведением к AnyObject?

Ответ №1:

Все зависит от того, что req есть. Если это что-то, что может быть приведено как AnyObject и на что реагирует object(forKey:) , ваш код компилируется и запускается. Например:

 let req : [String:Any] = ["selectorString":"hey", "arguments":["ho"]]
let selectorString: String = (req as AnyObject).object(forKey: "selectorString") as! String
let args = (req as AnyObject).object(forKey: "arguments") as! NSArray
  

Однако, если req невозможно преобразовать в AnyObject, вы получите ошибку компиляции.

Комментарии:

1. Также это может зависеть от того, какую версию Swift вы используете.