ios - 如何将“Int8?”转换为“Int?”?
问题描述
我有一个UInt8?
名为的变量seconds
,我需要将它传递给一个接受Int?
.
这导致无法将类型的值转换UInt8?
为预期的参数类型Int?
。
这意味着我必须投射,所以我尝试了明显的:
Int?(seconds)
但这会导致:UInt8?
不能转换为Int
.
我当然可以:
(seconds == nil) ? nil : Int(seconds!)
但是WTF,真的有必要这么做作吗?
解决方案
你的类型是Optional<UInt8>
。AUInt8
总是可以Int
用函数转换为 a Int.init
。但由于它被包裹在一个 中Optional
,你必须将该函数映射到可选函数上,从而产生一个新的 type 值Optional<Int>
:
seconds.map(Int.init)
Optional.map(_:)
和它的伙伴flatMap
通常使使用选项更容易。
推荐阅读
- django - 如何在带有“noreply”地址的 Django send_email 中包含头像/个人资料图像?
- ffmpeg - ffmpeg“蒸汽”cbr gop
- python - 改变不和谐角色的颜色
- lookup - 在对等网络中最小化手指表
- flutter - 如何解决在 null 上调用 getter 'categoryName'。问题?
- mysql - INSERT INTO 使用子查询告诉我一个未涉及的字段是错误吗?
- kdb - 如何在 KDB 中用 NaN 替换列中的前 10 个条目
- html - 通过单击按钮更改 Ionic 应用程序中的输入边框颜色
- regex - 匹配日期,不包括月份中的 0
- r - 在 R 中显示分布的最佳图是什么?