在从更新到Beta 7的大量错误中,我得到了这个让我头疼的特别之处......
let views:NSDictionary =
[
"leftView": _leftVC.view,
"rightView": _rightVC.view,
"outerView": _scrollView.superview
];
Run Code Online (Sandbox Code Playgroud)
错误:无法将表达式'type'类型转换为'StringLiteralConvertible'类型需要'views'的方法需要一个NSDictionary,所以我不能只使用Swift Dictionary.
我如何调整上述代码以满足Xcode6 Beta7?
问题是它UIScrollView.superview是可选的,因此您必须将未包装的值放入字典中
let views:NSDictionary =
[
"leftView": _leftVC.view,
"rightView": _rightVC.view,
"outerView": _scrollView.superview!
];
Run Code Online (Sandbox Code Playgroud)
使用更安全的逻辑而不是隐式展开(即检查superview不是nil),除非您100%确定它包含非零值.
即使views变量是NSDictionary类型,您用来初始化它的字典文字也会评估为快速字典 - 然后它会静默地桥接到NSDictionary.
编译器抱怨的原因是作为_scrollView.superview一个可选项,它可能是零,并且这是不允许的.
正如@JackLawrance所指出的,即使用文字初始化,字典也可以具有非统一值类型.
旁注:我们什么时候会收到更有意义的错误消息?:)
| 归档时间: |
|
| 查看次数: |
3233 次 |
| 最近记录: |