我需要将一个值存储为Float,但源数据是CGFloat:

let myFloat : Float = myRect.origin.x

但这会导致编译器错误:"NSNumber"不属于"Float"子类型

所以,如果我明确地这样投射:

let myFloat : Float = myRect.origin.x as Float

但这反过来会导致编译器错误:"无法将表达式的类型"Float"转换为"Float"

请问,要做到这一点并满足编译器的要求,正确的方法是什么?

推荐答案

您可以使用Float()初始值设定项:

let cgFloat: CGFloat = 3.14159
let someFloat = Float(cgFloat)

Swift相关问答推荐

如何使用swift宏生成一个带有关联值的枚举?

SWIFT闭包使用的是陈旧的值,即使它是S@转义

它是RxSwift中直接用于可扩展视图的有效的可扩展BehaviorRelay值?

如何增加 NSStatusBar 图像大小?

对实例方法appendInterpolation的调用没有完全匹配

使用 @resultBuilder 的通用 buildList 函数

Swift数据关系

Xcode创建GitHub仓库,但未推送所有文件

SwiftUI 交易:根据外部状态制作一个动画或静止的按钮

RealityKit - 从中心zoom 模型

Swiftui 无法从核心数据中获取数据

如何在 Swift 中对单个单词进行词形还原

如何在 SwiftUI 中将图像传递到 2 个视图

符合协议 - 错误?

是否可以使任何协议符合 Codable?

如何让 UIKit 挤压你的视图,使其适合屏幕

将强制向下转换视为可选将永远不会产生零

3D touch /强制touch 实现

由于编译器中的内部保护级别,无法访问框架 init 中的公共 struct

Swift 中的可选数组与空数组