Подтвердить что ты не робот

Swift 3: Выражение, неявно принудительное из UIView? любому

Кто-то еще должен был получить это сообщение, пока (или после) конвертирует проект iOS в Swift 3, но когда я выполняю поиск Google, я не получаю соответствующих результатов.

В любом случае, после преобразования в Swift 3 у меня есть около 30 предупреждений, которые говорят:

Выражение, неявно принудительное из UIView? к любому

Но предупреждения не указывают на какую-либо конкретную строку кода. Они ссылаются только на класс, где существует предупреждение.
Кто-нибудь имеет представление об этом предупреждении или о том, как я могу заставить их замолчать?

4b9b3361

Ответ 1

В моем случае это была проблема, связанная со словарем без явного типа:

let dict = ["key": value]

Чем я решил указать тип:

let dict: [String: Any] = ["key": value]

В вашем случае вы можете указать свой тип значения:

let dict: [String: UIView] = ["key": value]

Ответ 2

Это произойдет, когда функция, которую вы вызываете, имеет параметр типа Любые, и вы передаете необязательный.

Например:

let color: UIColor? = UIColor.red
UIBarButtonItem.appearance().setTitleTextAttributes([NSFontAttributeName: color], for: .normal)

Обратите внимание, что цвет имеет тип UIColor? и что setTitleTextAttributes ожидает словарь типа [String: Any]?.

Чтобы избежать предупреждения, вам нужно либо принудительно развернуть свой вариант, либо передать его в "Любой".

UIBarButtonItem.appearance().setTitleTextAttributes([NSFontAttributeName: color!], for: .normal)

или

UIBarButtonItem.appearance().setTitleTextAttributes([NSFontAttributeName: color as Any], for: .normal)

Ответ 3

Похож на ошибку в компиляторе Swift:

https://bugs.swift.org/browse/SR-2921

В настоящее время я вижу это с Xcode 8.1 и 8.2 beta 1.

В вашем случае предупреждение должно идентифицировать исходный файл, но не строку - как вы сказали. Вам нужно будет искать вызовы функций с параметрами Any.

Хорошо, что он кажется исправленным в предстоящей инструментальной цепочке Swift.

Я считаю, что это исправлено в Xcode 8.3 beta 1 (но не подтверждено)