在从更新到Beta 7的大量错误中,我得到了这个特别令我头痛的错误......
let views:NSDictionary =
[
"leftView": _leftVC.view,
"rightView": _rightVC.view,
"outerView": _scrollView.superview
];
错误: 无法转换表达式' type' Dictionary'键入' StringLiteralConvertible' 需要观看的方法'需要一个NSDictionary,所以我不能只使用Swift词典。
我如何调整上述代码以满足Xcode6 Beta7?
答案 0 :(得分:7)
问题是UIScrollView.superview
是可选的,所以你必须将未包装的值放在字典中
let views:NSDictionary =
[
"leftView": _leftVC.view,
"rightView": _rightVC.view,
"outerView": _scrollView.superview!
];
使用更安全的逻辑而不是隐式展开(即检查superview
不是nil),除非您100%确定它包含非零值。
即使views
变量属于NSDictionary
类型,您用来初始化它的字典文字也会计算为快速字典 - 然后它会静默地桥接到NSDictionary
。< / p>
编译器抱怨的原因是_scrollView.superview
是可选的,它可能是零,并且不允许这样做。
正如@JackLawrance所指出的,即使用文字初始化,字典也可以有非统一的值类型。
旁注:我们什么时候会收到更有意义的错误消息? :)