首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Swift 4.2,Xcode 10.2无合并操作符警告

Swift 4.2,Xcode 10.2无合并操作符警告
EN

Stack Overflow用户
提问于 2019-04-08 06:58:37
回答 1查看 150关注 0票数 0

Xcode 10.1上,以下语句没有任何问题,但在将Xcode更新为10.2编译器后,将为该语句生成警告。

代码语言:javascript
运行
复制
return [
    "sublevels": (self.sublevels?.array ?? [Sublevel]()) as NSObject
]

sublevelsNSOrderedSet,生成的警告如下:

代码语言:javascript
运行
复制
Left side of nil coalescing operator '??' has non-optional type '[Any]?', so the right side is never used

但是,如果我按下面的方式破坏单个语句,则警告将消失。

代码语言:javascript
运行
复制
let sublevels = self.sublevels?.array ?? [Sublevel]()
return [
    "sublevels": sublevels as NSObject
]

请大家解释一下-第一份声明有什么问题吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-04-08 08:11:12

正如OOPer所提到的,解决方案是提供一个默认的Any值作为操作符的右侧,在本例中是[Any],因为NSOrderedSet没有绑定到它的特定类型。解决办法是:

代码语言:javascript
运行
复制
return [
    "sublevels": (self.sublevels?.array ?? []) as NSObject
]

关于这个问题的更多信息,我建议你看看型铸造。在页面底部,有关于转换Any类型的说明。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55567809

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档