Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/115.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 我想使用货币格式化程序来设置带有逗号的金额和带有限制的十进制字符,并且字符不应超过10,并且应首先显示$_Ios_Swift - Fatal编程技术网

Ios 我想使用货币格式化程序来设置带有逗号的金额和带有限制的十进制字符,并且字符不应超过10,并且应首先显示$

Ios 我想使用货币格式化程序来设置带有逗号的金额和带有限制的十进制字符,并且字符不应超过10,并且应首先显示$,ios,swift,Ios,Swift,我想使用货币格式化程序设置带有逗号的金额和带有限制的十进制字符,并且字符不应超过10,并且应首先显示$。 下面是代码示例,但不使用十进制 func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool { var newLength = 10 if textField

我想使用货币格式化程序设置带有逗号的金额和带有限制的十进制字符,并且字符不应超过10,并且应首先显示$。 下面是代码示例,但不使用十进制

    func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
        var newLength = 10
        if textField == donateAmountTextfield {
                let text = donateAmountTextfield.text!
                newLength = text.characters.count + string.characters.count - range.length
        }
    return newLength <= 10 // Bool
}

func textFieldDidEndEditing(_ textField: UITextField) {
    if textField == donateAmountTextfield {
        if donateAmountTextfield.text != "" {
            dollerSign.isHidden = true
            if let amountString = donateAmountTextfield.text?.currencyInputFormatting() {
                donateAmountTextfield.text = amountString
            }
    } else {
            dollerSign.isHidden = false
        }
    } else if textField == enterCardNumber {
        if validateData.validateDonation((donateAmountTextfield?.text)! as String) {
            self.view.makeToast("Please enter valid Donation amount", duration: 5.0, position: CSToastPositionCenter)
        }
    }

}

看看viewdidloadformatter中的strAmount量是多少。字符串(from:NSNumber(numberFromField))也是一个错误。
extension String {

    // formatting text for currency textField
    func currencyInputFormatting() -> String {

        var number: NSNumber!
        let formatter = NumberFormatter()
        formatter.numberStyle = .currencyAccounting
        formatter.currencySymbol = "$"
        formatter.maximumFractionDigits = 2
        formatter.minimumFractionDigits = 2

        var amountWithPrefix = self

        // remove from String: "$", ".", ","
        let regex = try! NSRegularExpression(pattern: "[^0-9]", options: .caseInsensitive)
        amountWithPrefix = regex.stringByReplacingMatches(in: amountWithPrefix, options: NSRegularExpression.MatchingOptions(rawValue: 0), range: NSMakeRange(0, self.characters.count), withTemplate: "")

        let double = (amountWithPrefix as NSString).doubleValue
        number = NSNumber(value: (double / 1))

        // if first number is 0 or all numbers were deleted
        guard number != 0 as NSNumber else {
            return ""
        }

        return formatter.string(from: number)!
    }
}
IBtextFieldName.text = self.formatCurrency(strAmount: strAmount) //In viewDidLoad

func formatCurrency(strAmount strAmount: String) -> String  {

    let formatter = NSNumberFormatter()
    formatter.numberStyle = NSNumberFormatterStyle.CurrencyStyle
    formatter.locale = NSLocale(localeIdentifier: "en_US")
    let numberFromField = (NSString(string: strAmount).doubleValue)/100
    return formatter.stringFromNumber(numberFromField)!
}

//For character should not exceed by 10

func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool {

    let newCharLength = textField.text!.characters.count + string.characters.count - range.length

    if newCharLength >= 10 {
        return false
    }
}