从未签名类型到签名类型的安全转换

时间:2018-08-27 09:40:54

标签: swift

拥有

let finalValueUnsigned64:UInt64 

我想将其转换为Int64

let finalValue = Int64(finalValueUnsigned64)

但是初始化程序不会引发异常,因此当值太大且无法进行转换时,我可以处理这种情况。如何将任何未签名转换为已签名,并获得一些反馈,说明是否可以转换?

1 个答案:

答案 0 :(得分:3)

您可以使用Int64(exactly:)初始化程序来检查是否可以转换值。如果无法精确表示该值,它将返回nil。例如:

Int8(exactly: 100)   // Optional(100)
Int8(exactly: 1_000) // nil