Quelqu'un d'autre doit avoir reçu ce message pendant (ou après) la conversion d'un projet iOS en Swift 3, mais quand je fais une recherche Google, je n'obtiens aucun résultat pertinent.
Quoi qu'il en soit, après la conversion en Swift 3, j'ai environ 30 avertissements qui disent:
Expression implicitement contrainte de 'UIView?' à tout
Mais les avertissements ne pointent sur aucune ligne de code spécifique. Ils ne font référence qu'à la classe où l'avertissement existe.
Quelqu'un a-t-il un aperçu de cet avertissement ou de la façon dont je pourrais le faire pour le faire taire?
Dans mon cas, il s'agissait d'un problème lié à un dictionnaire sans type explicite:
let dict = ["key": value]
Puis j'ai résolu en spécifiant le type:
let dict: [String: Any] = ["key": value]
Dans votre cas, vous pouvez spécifier votre type de valeur:
let dict: [String: UIView] = ["key": value]
Cela se produit lorsque la fonction que vous appelez a un paramètre de type Any, et que vous passez un facultatif.
Par exemple:
let color: UIColor? = UIColor.red
UIBarButtonItem.appearance().setTitleTextAttributes([NSFontAttributeName: color], for: .normal)
Notez que la couleur est de type IColor? et que setTitleTextAttributes attend un dictionnaire de type [String: Any]?.
Pour éviter cet avertissement, vous devez soit forcer le déballement de votre option, soit le lancer dans Any.
UIBarButtonItem.appearance().setTitleTextAttributes([NSFontAttributeName: color!], for: .normal)
ou
UIBarButtonItem.appearance().setTitleTextAttributes([NSFontAttributeName: color as Any], for: .normal)
Ressemble à un bogue du compilateur Swift:
https://bugs.Swift.org/browse/SR-2921
Actuellement, je vois cela avec Xcode 8.1 et 8.2 beta 1.
Dans votre cas, l'avertissement doit identifier le fichier source, mais pas la ligne, comme vous l'avez indiqué. Vous devrez rechercher des appels aux fonctions avec les paramètres Any
.
La bonne nouvelle est qu’il semble être corrigé dans une prochaine chaîne d’outils Swift.
Je crois que ceci est corrigé dans Xcode 8.3 beta 1 (mais n’a pas été confirmé)
Le type attendu est Any
mais le type fourni était UIView?
Le problème vient de facultatif, assurez-vous simplement qu'une instance de UIView
est transmise et que tout fonctionnera.