Вы можете map
необязательный:
var optionalNumber : Int?
//later in code
let optionalPositiveNumber = optionalNumber.map { UInt($0) }
Из документации :
Оценивает данное закрытие, когда этот необязательный экземпляр не ноль, передав в качестве параметра развернутое значение.
func map<U>(_ transform: (Wrapped) throws -> U) rethrows -> U?
Таким образом, результатом является UInt?
в соответствии с запросом и либо nil
, либо преобразованное число со знаком.
Обратите внимание, что преобразование не будет выполнено (и произойдет сбой с исключением времени выполнения), если заданное число будет отрицательным. Если это проблема, лучшим вариантом может быть
let optionalPositiveNumber = optionalNumber.flatMap { UInt(exactly: $0) }
, который возвращает nil
, если заданное число равно nil
или отрицательно.