IOSプロジェクトをSwift 3に変換している間(または後)に、このメッセージを他の誰かが受け取ったに違いありません。
とにかく、Swift 3に変換した後、約30の警告があります。
「UIView?」から暗黙的に強制された表現に
ただし、警告は特定のコード行を指すものではありません。警告が存在するクラスのみを参照します。
誰かがこの警告についての洞察を持っていますか?
私の場合、明示的なタイプのない辞書に関連する問題でした:
let dict = ["key": value]
タイプを指定して解決したより:
let dict: [String: Any] = ["key": value]
あなたの場合、値のタイプを指定できます:
let dict: [String: UIView] = ["key": value]
これは、呼び出す関数にAny型のパラメーターがあり、オプションを渡す場合に発生します。
例えば:
let color: UIColor? = UIColor.red
UIBarButtonItem.appearance().setTitleTextAttributes([NSFontAttributeName: color], for: .normal)
colorはIColor?タイプであり、setTitleTextAttributesタイプ[String:Any]?の辞書が必要です。
警告を回避するには、オプションのラップを強制的に解除するか、Anyにキャストする必要があります。
UIBarButtonItem.appearance().setTitleTextAttributes([NSFontAttributeName: color!], for: .normal)
または
UIBarButtonItem.appearance().setTitleTextAttributes([NSFontAttributeName: color as Any], for: .normal)
Swiftコンパイラのバグのように見えます:
https://bugs.Swift.org/browse/SR-2921
現在、Xcode 8.1および8.2 beta 1でこの問題が発生しています。
あなたの場合、警告はソースファイルを識別しますが、行ではありません-あなたが述べたように。 Any
パラメーターを持つ関数の呼び出しを探し回る必要があります。
良い点は、今後のSwiftツールチェーンで修正されたように見えることです。
これはXcode 8.3ベータ1で修正されたと思われます(ただし確認されていません)
予想されるタイプはAny
ですが、提供されるタイプはUIView?
問題はoptionalにあり、UIView
のインスタンスが渡され、動作することを確認してください。