将UITextField转换为逗号分隔的数字,再转换为点分隔符



你好,强大的StackOverflowers,

我知道这个问题肯定不止一百次了,但我只是处于一个完全初学者的阶段(Swift 4/Xcode 9),我完全不知道如何实现我发现的所有这些提示和东西。

我想这很简单,所以这是我的神经痛:

我正在创建一个百分比应用程序。一切正常。。。只要我不碰iPhone数字键盘上设置为德语的逗号,因为计算只适用于点分隔符。

一开始,我希望将UITextField转换为点分隔的Integer/Float,并将其转换回逗号分隔的数字。短:使用逗号分隔符输入,使用点分隔符计算,"打印"结果显示逗号分隔符。

以下是当前有效的代码,只要手机设置为英语或(如果是德语)仅将非十进制数字添加到字段中:

哦。。。还有一件重要的事情:到目前为止,我未能将在这里找到的代码片段添加到我的ViewController.swift中……我只是不知道该把这些行放在哪里:(我们开始了:

class ViewController: UIViewController {
//User Fields:
@IBOutlet weak var kind: UITextField!      // kind of unit (€, $, metres...)
@IBOutlet weak var base: UITextField!      //base
@IBOutlet weak var percent: UITextField!   //percent (1%, 4,5% etc.)
//Result Labels:
@IBOutlet weak var percentInKind: UILabel!   //the percent as value in kind
@IBOutlet weak var total: UILabel!           //base minus percentInKind 
//Calculation:
@IBAction func calculateTotal(_ sender: Any) {

let kindConv = String(kind.text!)          //Converted to String
let baseConv = Double(base.text!)          //Converted to Double
let percentConv = Double(percent.text!)    //Converted to Double
let percentInKindConv = Double(baseConv! * percentConv!) / 100
percentInKind.text = String(format: "%.2f", percentInKindConv) + " (kindConv)"
total.text = String(format: "%.2f", baseConv! - percentInKindConv) + " (kindConv)"
}

0.05pm,闹钟在早上5:30响起,但我不能让这个周日结束时不解决这个初学者的问题。所以我希望这个对我有效的代码是正确的和"干净的"。我会把整个东西粘贴起来,让人们看到它在搜索。我真的很感激关于缩短或"缓解"这一点的进一步提示。所以…我们开始了:

//User input fields
@IBOutlet weak var kind: UITextField!                //kind of unit (€, metres etc.)
@IBOutlet weak var base: UITextField!                //base number
@IBOutlet weak var percent: UITextField!             //percent in %
//Result labels
@IBOutlet weak var sumPercent: UILabel!              //% in kind of unit
@IBOutlet weak var total: UILabel!                   //base - sumPercent
//Calculation
@IBAction func berechnenAbziehen(_ sender: Any) {

let kindVar = String(kind.text!)
let formatter = NumberFormatter()
formatter.numberStyle = .decimal
formatter.alwaysShowsDecimalSeparator = true
formatter.locale = Locale(identifier: "de_DE")
formatter.decimalSeparator = ","
formatter.maximumFractionDigits = 2
formatter.minimumFractionDigits = 2
let baseFormatter = formatter.number(from: base.text!) as! Double
let percentFormatter = formatter.number(from: percent.text!) as! Double
let percentSum = baseFormatter * percentFormatter / 100
let totalSum = baseFormatter - percentSum
sumPercent.text = formatter.string(for: percentSum)! + " (kindVar)"
total.text = formatter.string(for: totalSum)! + " (kindVar)"

晚安!;-)

最新更新