You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Swift中如何将Optional<Double>转换为Optional<Int>

Swift 可选Double转可选Int的处理方案

Swift 没有专门的内置方法直接把 Double? 转成 Int?,但不用自己写扩展,用标准库自带的可选类型 map 方法就能实现你要的效果:非nil的Double会被转成对应的Int,nil还是保持nil。

具体用法

直接用map包裹Int初始化器就行:

// 非nil的情况
let someDouble: Double? = 4.7
let someInt = someDouble.map(Int.init)
// someInt 是 Optional(4)

// nil的情况
let nilDouble: Double? = nil
let nilInt = nilDouble.map(Int.init)
// nilInt 是 nil

为什么直接用Int()会报错?

你遇到的Value of optional type 'Double?' must be unwrapped to a value of type 'Double'错误,是因为Int的初始化器只接受非可选的Double值,可选类型必须先解包才能传进去,而map方法会自动帮你处理解包:如果可选值是nil,map直接返回nil;如果有值,就把值传给闭包里的Int.init做转换。

另一种写法:可选绑定

要是你更习惯用可选绑定,也能达到同样效果,但map的写法更简洁:

let optionalDouble: Double? = 6.1
var optionalInt: Int?
if let unwrappedDouble = optionalDouble {
    optionalInt = Int(unwrappedDouble)
}
// optionalInt 是 Optional(6)

内容的提问来源于stack exchange,提问作者ocuke

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 21:01:19