В основном я хотел сравнить два кортежа, в которых 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)
Но на этот раз компилятор поставляется с предупреждением, как показано ниже,
Левая сторона оператора объединения нулей '??'имеет необязательный тип 'Bool', поэтому правая часть никогда не используется
Как сделать исполняемый код без ошибок и предупреждений компилятора?