其他人必须在将iOS项目转换为Swift 3时(或之后)收到此消息,但是当我进行Google搜索时,我得不到相关结果.
无论如何,在转换为Swift 3后,我有大约30个警告说:
表达隐含地从'UIView?'强制执行 去任何
但警告并未指出任何特定的代码行.它们仅引用存在警告的类.
有没有人对这个警告有所了解,或者我如何对它们进行沉默?
小智 35
在我的情况下,这是一个与没有显式类型的字典有关的问题:
let dict = ["key": value]
Run Code Online (Sandbox Code Playgroud)
比我解决了指定类型:
let dict: [String: Any] = ["key": value]
Run Code Online (Sandbox Code Playgroud)
在您的情况下,您可以指定您的值类型:
let dict: [String: UIView] = ["key": value]
Run Code Online (Sandbox Code Playgroud)
Mic*_*son 30
当您调用的函数具有Any类型的参数并且您正在传递可选项时,会发生这种情况.
例如:
let color: UIColor? = UIColor.red
UIBarButtonItem.appearance().setTitleTextAttributes([NSFontAttributeName: color], for: .normal)
Run Code Online (Sandbox Code Playgroud)
请注意,颜色是UIColor类型?并且setTitleTextAttributes需要一个类型为[String:Any]的字典?.
为了避免警告,您必须强制打开可选项,或将其强制转换为Any.
UIBarButtonItem.appearance().setTitleTextAttributes([NSFontAttributeName: color!], for: .normal)
Run Code Online (Sandbox Code Playgroud)
要么
UIBarButtonItem.appearance().setTitleTextAttributes([NSFontAttributeName: color as Any], for: .normal)
Run Code Online (Sandbox Code Playgroud)
Dan*_*iel 15
看起来像Swift编译器中的错误:
https://bugs.swift.org/browse/SR-2921
目前,我在Xcode 8.1和8.2 beta 1中看到了这一点.
在您的情况下,警告应该标识源文件,但不是行 - 如您所述.您将不得不四处寻找带Any参数的函数调用.
好消息是它在即将推出的Swift工具链中看起来很复杂.
我相信这已在Xcode 8.3 beta 1中修复(但尚未确认)
| 归档时间: |
|
| 查看次数: |
16289 次 |
| 最近记录: |