相关疑难解决方法(0)

在Swift中使用NSNumberFormatter进行货币争夺

我正在创建一个预算应用程序,允许用户输入他们的预算和交易.我需要允许用户从单独的文本字段输入便士和磅数,并且需要将它们与货币符号一起格式化.我现在工作得很好,但是想把它本地化,因为目前它只适用于GBP.我一直在努力将NSNumberFormatter的例子从Objective C转换为Swift.

我的第一个问题是我需要将输入字段的占位符设置为特定于用户位置.例如.英镑和便士,美元和美分等......

第二个问题是需要格式化在诸如10216和32的每个文本字段中输入的值,并且需要添加特定于用户位置的货币符号.所以这将是10,216.32英镑或10,216.32美元等...

另外,我需要在计算中使用格式化数字的结果.那么如何在不遇到货币符号问题的情况下解决问题呢?

任何帮助将非常感激.

nsnumberformatter swift

78
推荐指数
5
解决办法
8万
查看次数

如何限制UITextField只接受Swift中的数字?

我希望用户只在a中输入数值UITextField.在iPhone上我们可以显示数字键盘,但在iPad上用户可以切换到任何键盘.

有没有办法限制用户只输入数字值UITextField

iphone uitextfield ipad ios swift

62
推荐指数
10
解决办法
8万
查看次数

输入时在Swift中的文本字段中格式化货币

我正在尝试在用户输入时在Swift的文本字段中格式化货币输入.

到目前为止,我只能在用户完成输入时成功格式化:

@IBAction func editingEnded(sender: AnyObject) {

    let formatter = NSNumberFormatter()
    formatter.numberStyle = NSNumberFormatterStyle.CurrencyStyle
    formatter.locale = NSLocale(localeIdentifier: "en_US")
    var numberFromField = NSString(string: textField.text).doubleValue

    textField.text = formatter.stringFromNumber(numberFromField)
}
Run Code Online (Sandbox Code Playgroud)

但是,我想在用户输入货币时格式化货币.当我尝试在TextField操作"编辑已更改"或"值已更改"时执行此操作时,我只能输入1个数字(如果我输入8,则变为$ 8.00)但是一旦我输入第二个数字,一切都会达到0.00美元而我除此之外不能进一步进入.

有什么建议?我觉得这应该是一个简单的修复,但我不能完全理解它.

objective-c ios swift

11
推荐指数
3
解决办法
2万
查看次数

尝试将UITextField格式化为仅适用于iOS中的数字输入的货币计算器

UITextField我的应用程序中有一个应该只接收来自用户的数字输入.此数字输入应该表示货币(即只有两个小数位),当没有输入任何内容时,默认值为0.00.我还希望在最左边有一个"$"符号,数字右对齐,这样数字从右向左移动,如下所示:

例如,输入数字"1234.56".

1. 0.00美元.

2. 0.01美元.

3. 0.12美元.

4. 1.23美元.

5. $ 12.34.

6. 123.45美元.

7. 1,234.56美元.

8.等等......

UITextField右对齐,以便它已经将数字从右边移到左边.但是,我需要在UITextField中放置"$",我希望将默认的0.00值修改为用户一次输入的数字.用户不必输入小数点,因为它应该已经在保持其位置的文本字段中.然后,我希望数字有一个","自动输入以分隔每三个数字.我希望应用程序执行此操作,因为用户正在输入数字,并且在输入所有内容后不会格式化.我该怎么做?我见过很多人都说我要使用,但是我想知道我如何结合使用它,以便它可以动态格式化数字文本,如上所述?NSNumberFormatterUITextField

我发现在StackOverflow上发布了以下问题:

输入带小数点的数值的最佳方法是什么?

但我想知道如何将其作为我问题的解决方案.

currency uitextfield nsnumberformatter ios

10
推荐指数
2
解决办法
7251
查看次数

如何动态格式化数字以在UITextField条目中包含逗号?

我希望UITextField在用户输入时动态地将逗号添加到我的数字条目中.

例如:123,45612,345,678,但不是这样123,45123,4567.

当用户在Objective-C中键入数字时,如何自动附加逗号?

编辑:我也希望能够允许用户输入小数.

objective-c ios

8
推荐指数
3
解决办法
1万
查看次数

如何在 Swift 3 中格式化十进制

我正在尝试使用 SwiftDecimal结构进行货币操作,但无法对其进行格式化。

如何格式化var myDecimal:Decimal = 9999.99以显示 $9,999.99?

不使用Decimals 我可以按如下方式执行...

let myTotal:NSNumber = 9999.99

let currencyFormatter = NumberFormatter()
currencyFormatter.usesGroupingSeparator = true

currencyFormatter.numberStyle = .currency
currencyFormatter.locale = NSLocale.current
let priceString = currencyFormatter.string(from: myTotal)

myLabel.text = priceString
Run Code Online (Sandbox Code Playgroud)

这很好用,但我一直在阅读,Decimal似乎是正确的货币类型。

我试过...

let myTotal:Decimal = 9999.99

let currencyFormatter = NumberFormatter()
currencyFormatter.usesGroupingSeparator = true

currencyFormatter.numberStyle = .currency
// localize to your grouping and decimal separator
currencyFormatter.locale = NSLocale.current
let priceString = currencyFormatter.string(from: NSNumber(myTotal))

myLabel.text = priceString
Run Code Online (Sandbox Code Playgroud)

...但我得到错误

参数标签“(_:)”不匹配任何可用的重载

Decimal …

decimal numberformatter swift

7
推荐指数
1
解决办法
3953
查看次数

Swift 中文本字段的百分比掩码

我一直在尝试实现以 0.00% 值开头的文本字段的百分比掩码。如果用户点击“1”,它将变为 0.01%。如果他们随后点击 0,则变为 0.10%,依此类推。

我已经通过货币实现了这一点。我已经非常接近使用百分比,但未能准确地创建我所追求的内容。

因此,字段最初设置为 0.00%。我想显示百分比符号,我希望最大数字为 100.00%,我希望最大小数位数为 2,并且希望在用户键入时更新该字段,并且我希望他们能够按退格键删除最后输入的数字。哦,当它达到最大值 100.00 时,按另一个数字不会重置该值,也不会做任何奇怪的事情。

这是我尝试过的代码。我也尝试过很多变体:

func textFieldDidChanged(textField: UITextField) {
    numberFormatter.numberStyle = .PercentStyle
    numberFormatter.maximumFractionDigits = 2
    numberFormatter.minimumFractionDigits = 2
    numberFormatter.maximum = 100
    let text = textField.text!.stringByReplacingOccurrencesOfString(numberFormatter.percentSymbol, withString: "").stringByReplacingOccurrencesOfString(numberFormatter.groupingSeparator, withString: "").stringByReplacingOccurrencesOfString(numberFormatter.decimalSeparator, withString: "")
    textField.text = numberFormatter.stringFromNumber((text as NSString).doubleValue / 100.0)
}
Run Code Online (Sandbox Code Playgroud)

我已经查遍了,并且在这方面花了太长时间。请帮忙。

ios swift2

5
推荐指数
1
解决办法
2665
查看次数

如何使用户仅在 SwiftUI 文本字段中输入数字与货币,同时保留 $ 和 .?

现在,我有以下内容:

private var currencyFormatter: NumberFormatter = {
    let f = NumberFormatter()
    // allow no currency symbol, extra digits, etc
    f.isLenient = true
    f.numberStyle = .currency
    return f
}()
Run Code Online (Sandbox Code Playgroud)
TextField("Total", value: $totalInput, formatter: currencyFormatter)
    .font(.largeTitle)
    .padding()
    .background(Color.white)
    .foregroundColor(Color.black)
    .multilineTextAlignment(.center)
Run Code Online (Sandbox Code Playgroud)

我希望文本字段以 0.00 美元作为占位符开始,但是当用户开始输入时,前两个输入将以美分填充...因此 5055 将逐渐显示为:

步骤 1(用户点击 5 次):0.05 美元
步骤 2(用户点击 0 次):0.50 美元
步骤 3(用户点击 5 次):5.05 美元
步骤 4(用户点击 5 次):50.55 美元

如果金额大于 $999,则将插入逗号。

如何实现这一目标?现在我的totalInput 类型是Double?。

currency textfield swift swiftui

3
推荐指数
1
解决办法
2087
查看次数

Swift 在十进制格式中失去精度

使用小数类型处理货币输入时,我遇到精度问题。问题出在格式化程序上。这是游乐场中最小的可重现代码:

let formatter = NumberFormatter()
formatter.numberStyle = .currency
formatter.isLenient = true
formatter.maximumFractionDigits = 2
formatter.generatesDecimalNumbers = true

let text = "89806.9"
let decimal = formatter.number(from: text)?.decimalValue ?? .zero
let string = "\(decimal)"
print(string)
Run Code Online (Sandbox Code Playgroud)

它打印出来89806.89999999999而不是89806.9. 然而,大多数其他数字都很好(例如8980.9)。所以我不认为这是双精度与小数的问题。

编辑:

我需要使用格式化程序的原因是有时我需要处理货币格式输入:

let text = "$89,806.9"
let decimal = formatter.number(from: text)?.decimalValue ?? .zero
print("\(decimal)") // prints 89806.89999999999

let text2 = "$89,806.9"
let decimal2 = Decimal(string: text2)
print("\(decimal2)") // prints nil

Run Code Online (Sandbox Code Playgroud)

swift

3
推荐指数
1
解决办法
1189
查看次数

我可以在UITextField中使用固定的小数分隔符吗?

如何在uiTextField中键入时有一个固定的小数点分隔符(2位小数).下面附着的是样本图像.

以下应用程序在键入时保持格式,并在键入数字时从左侧移动数字.感谢任何帮助:)

固定小数分隔符

ios swift

2
推荐指数
1
解决办法
492
查看次数

Swift字符串剥离所有字符但数字和小数点?

我有这个字符串:

一些文字:12.3美元9

我希望得到结果:12.39

我找到了如何只保留数字的例子,但在这里我想保留小数点"."

在Swift中这样做的好方法是什么?

string swift

2
推荐指数
2
解决办法
2186
查看次数

未调用所需的init?(coder aDecoder:NSCoder)

我编写了自己的Button,Textfield,...类。在“自定义类”的情节提要中,将类设置为UIElement。这很好。

现在,我需要以编程方式添加的工具栏。当我在ViewController中添加工具栏时,一切都很好。但是我想像这样创建自己的工具栏类。

class MyOwnToolbar : UIToolbar {


required init?(coder aDecoder: NSCoder) {
    super.init(coder: aDecoder)
    //never called
    self.backgroundColor = UIColor.redColor()
    self.tintColor = UIColor.greenColor()
    self.barTintColor = UIColor.blueColor()
}

override init(frame: CGRect) {
   //error: super.init isn'T called on all paths before returning from initiliazer
}
Run Code Online (Sandbox Code Playgroud)

在我的ViewController中,我尝试这样调用:

fromToolBar = MyOwnToolBar() //call nothing?
fromToolBar = MyOwnToolBar(frame: CGRectMake(0,0,0,0)) //doesn't work because init(frame: CGRECT) doesnt work
Run Code Online (Sandbox Code Playgroud)

我的ViewController中的旧代码有效:

    self.untilToolBar = UIToolbar(frame: CGRectMake(0,0,0,0))
    untilToolBar?.backgroundColor = redColor
    untilToolBar?.tintColor = greenColor
    untilToolBar?.barTintColor = blueColor
Run Code Online (Sandbox Code Playgroud)

因此,我可以使用有效的解决方案,但我想理解为什么我的代码无法正常工作。因此,也许有人有解决方案或良好的联系。

init nscoder swift

2
推荐指数
1
解决办法
5006
查看次数