Swift 4.2,Xcode 10.2没有合并运算符警告

时间:2019-04-08 06:58:38

标签: ios swift xcode10.2

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

return [
    "sublevels": (self.sublevels?.array ?? [Sublevel]()) as NSObject
]

sublevelsNSOrderedSet,并且生成的警告如下:

Left side of nil coalescing operator '??' has non-optional type '[Any]?', so the right side is never used

但是,如果我按以下方式破坏一条语句,警告就会消失。

let sublevels = self.sublevels?.array ?? [Sublevel]()
return [
    "sublevels": sublevels as NSObject
]

请,任何人都可以解释-第一句话的问题是什么?

1 个答案:

答案 0 :(得分:1)

如OOPer所述,解决方案是提供默认的Any值作为运算符的右侧,在这种情况下为[Any],因为NSOrderedSet没有特定类型绑定到它。解决方案是:

return [
    "sublevels": (self.sublevels?.array ?? []) as NSObject
]

有关此问题的更多信息,建议您查看type casting。在页面底部,有关于强制转换Any类型的说明。