在Xcode 10.1上,以下语句没有任何问题,但在将Xcode更新为10.2编译器后,将为该语句生成警告。
return [
    "sublevels": (self.sublevels?.array ?? [Sublevel]()) as NSObject
]sublevels是NSOrderedSet,生成的警告如下:
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
]请大家解释一下-第一份声明有什么问题吗?
发布于 2019-04-08 08:11:12
正如OOPer所提到的,解决方案是提供一个默认的Any值作为操作符的右侧,在本例中是[Any],因为NSOrderedSet没有绑定到它的特定类型。解决办法是:
return [
    "sublevels": (self.sublevels?.array ?? []) as NSObject
]关于这个问题的更多信息,我建议你看看型铸造。在页面底部,有关于转换Any类型的说明。
https://stackoverflow.com/questions/55567809
复制相似问题