【发布时间】:2018-12-13 12:30:43
【问题描述】:
基本上我想比较两个元组,其中tuple1 有 3 个值都是非可选的,tuple2 有 3 个变量具有相同的数据类型但都是可选的。
let tuple1 = (1, true, true) // Static tuple
let tuple2 = (value1?.intValue, value2?.boolValue, value3?.boolValue) //Here value1,2.. are optional `NSNumber` values.
当我尝试比较它们 tuple1 == tuple2 时,我收到如下编译器错误
无法表达元组转换'(Int, Bool, Bool)'到'(Int?, Bool?, Bool?)'
所以我做了一个如下的工作来清除上面的错误。
let expectedResult = (LeadSyncStatus.Synced.rawValue ?? nil, true ?? nil, true ?? nil)
但是这次编译器带有如下警告,
nil 合并运算符 '??' 的左侧具有非可选类型 'Bool',因此永远不会使用右侧
如何使上述代码在没有编译器错误和警告的情况下可执行?
【问题讨论】: