加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ios – Xcode 6 Beta7 NSDictionary到Swift

发布时间:2020-12-14 17:12:48 所属栏目:百科 来源:网络整理
导读:在从更新到Beta 7的大量错误中,我得到了这个让我头疼的特别之处…… let views:NSDictionary = [ "leftView": _leftVC.view,"rightView": _rightVC.view,"outerView": _scrollView.superview ]; 错误: 无法转换表达式’类型’字典’键入’StringLiteralConv
在从更新到Beta 7的大量错误中,我得到了这个让我头疼的特别之处……

let views:NSDictionary =
        [
            "leftView": _leftVC.view,"rightView": _rightVC.view,"outerView": _scrollView.superview
        ];

错误:
无法转换表达式’类型’字典’键入’StringLiteralConvertible’
需要’views’的方法需要一个NSDictionary,所以我不能只使用Swift Dictionary.

我如何调整上述代码以满足Xcode6 Beta7?

解决方法

问题是UIScrollView.superview是可选的,所以你必须将未包装的值放在字典中

let views:NSDictionary =
[
    "leftView": _leftVC.view,"outerView": _scrollView.superview!
];

使用更安全的逻辑而不是隐式展开(即检查superview不是nil),除非您100%确定它包含非零值.

即使视图变量是NSDictionary类型,您用来初始化它的字典文字也会评估为快速字典 – 然后它会静默地桥接到NSDictionary.

编译器抱怨的原因是_scrollView.superview是可选的,它可能是nil,并且这是不允许的.

正如@JackLawrance所指出的,即使用文字初始化,字典也可以具有非统一值类型.

旁注:我们什么时候会收到更有意义的错误消息?

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读