我是Swift新手,如何将字符串转换为CGFloat?

我试过:

var fl: CGFloat = str as CGFloat
var fl: CGFloat = (CGFloat)str
var fl: CGFloat = CGFloat(str)

一切都不管用

推荐答案

如果你想要一个安全的方法来做这件事,这里有一个可能性:

let str = "32.4"
if let n = NumberFormatter().number(from: str) {
    let f = CGFloat(truncating: n)
}

如果将str改为"bob",它将不会转换为浮点,而其他大多数答案将转换为0.0

Side note:还要记住小数点分隔符可以是逗号或句点.您可能希望在数字格式化程序中指定它

let formatter = NumberFormatter()
formatter.decimalSeparator = "." // or ","

// use formatter (e.g. formatter.number(from:))

Swift相关问答推荐

绑定到可选值的非可选属性?'

Swift:iVar + Equatable上的协议约束

如何将图像插入到矩形中

带DispatchSourceTimer的定时器

字典下标或运算符,如果密钥不存在,则添加指定的默认&值是SWIFT?

如何使泡泡上的箭头直达封闭矩形

如何写一个;风格;视图修饰符,它会影响特定类型的所有嵌套视图?

Swift通过设置变量B自动设置变量A的值

Observable.create 捕获行为

避免 `(())` 显式指定 Void 类型的枚举关联值

使用 swift 的 Firebase 身份验证

格式化大货币数字

使用泛型的 Swift 枚举值

自定义 DispatchQueue 服务质量

创建 ViewModel 时 iOS 模拟器上的黑屏

Swift Components.Url 返回错误的 URL

如何让动画变慢 SwiftUI

如何快速判断设备方向是横向还是横向?

修复 Swift 3 中的警告C-style for Statement is deprecated

如何使用 Swift 枚举作为字典键? (符合 Equatable)