0

On Xcode 10.1,以下语句没有任何问题,但在更新Xcodeto10.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
]

请有人解释一下 - 第一个陈述有什么问题?

4

1 回答 1

1

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

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

有关此问题的更多信息,我建议您查看类型转换。在页面底部有一个关于转换Any类型的解释。

于 2019-04-08T08:11:12.653 回答