我想把它们转换成一个字符串.

我有两个UITextfield,声明如下:

@IBOutlet var wage: UITextField
@IBOutlet var hour: UITextField

当用户按下UIButton时,我想计算用户的工资,但我不能,因为我需要先将它们转换为浮动,然后才能使用它们.

我知道如何通过以下操作将它们转换为整数:

var wageConversion:Int = 0
wageConversion = wage.text.toInt()!

但是,我不知道如何将它们转换为浮动.

推荐答案

Swift 2.0+

现在有了Swift 2.0,你可以只使用Float(Wage.text),返回Float?类型.比下面只返回0的解决方案更清晰.

如果出于某种原因,您希望无效Float的值为0,那么可以使用Float(Wage.text) ?? 0,如果无效Float,它将返回0.


老办法

处理这一问题的最佳方法是直接浇铸:

var WageConversion = (Wage.text as NSString).floatValue

实际上,为了更好地使用它,我创建了一个extension:

extension String {
    var floatValue: Float {
        return (self as NSString).floatValue
    }
}

现在你只需拨打var WageConversion = Wage.text.floatValue,让分机为你处理这座桥!

这是一个很好的实现,因为它可以处理实际的浮动(输入为.),还可以帮助防止用户将文本复制到输入字段(12p.34,甚至12.12.41).

显然,如果苹果真的给Swift加了floatValue,这将抛出一个例外,但同时这可能是好事.如果他们以后真的添加了它,那么修改代码所需要做的就是删除扩展,一切都将无缝工作,因为您已经在呼叫.floatValue了!

此外,变量和常量应以小写开头(包括IBOutlets)

Swift相关问答推荐

map 视图上的SwiftUI渐变折线

阻塞(受CPU限制的)任务的异步功能?

在SWIFT中使用Objective-C struct 时出错(在作用域中找不到类型)

可以';t在标记为@Observable的类上使用属性包装

在Swift中如何用变量计算0.9的立方

如何使一个 Reality Composer 场景中的分组对象可拖动?

数组中某些元素的总和

无法使用 RealityKit 播放 USDZ 动画

为什么 String.contains 在我导入 Foundation 时表现不同?

XCUITest 在 TearDown 期间随机失败-无法终止 com.bundle.id

阻止其他类型的键盘

如何从 LLDB 调用带有断点的 Swift 函数?

如何在 Xcode 中的 UITests 下以通用方式访问后退栏按钮项?

仅在 Swift 中创建 Setter

在 ViewController 的 UICollectionView 中拉取刷新

在 Swiftui 中是否有一种简单的方法可以通过捏合来放大图像?

使用 ARAnchor 插入 node 和直接插入 node 有什么区别?

Swift UITableView reloadData 在一个闭包中

在Swift中的String对象中的特定字符之后删除所有字符的更优雅的方法是什么

Xcode忽略导入