如何使用带小数的currencyFormatter

时间:2017-05-30 21:36:00

标签: ios xcode core-data swift3 currency-formatting

我正在尝试将十进制存储在CoreData中并通过Swift 3中的货币格式化程序运行。这是我正在尝试使用的:

<tr>        
    <td>
        <div class="form-group select optional personal_conflict_victim">
            <label class="control-label select optional" for="personal_conflict_victim">¿USTED ES VÍCTIMA DEL CONFLICTO ARMADO Y SE ENCUENTRA INCLUIDO EN EL REGISTRO ÚNICO DE VÍCTIMAS?</label>
            <select class="form-control select optional" name="personal[conflict_victim]" id="personal_conflict_victim"><option value="">SELECCIONE</option>
                <option value="true">Si</option>
                <option value="false">No</option>
            </select>
        </div>
    </td>
    <td>
        <div class="form-group select optional personal_victimizing_fact">
            <label class="control-label select optional" for="personal_victimizing_fact">¿CUÁL ES EL HECHO VICTIMIZANTE?</label>
            <select class="form-control select optional" name="personal[victimizing_fact]" id="personal_victimizing_fact">
                <option value="">SELECCIONE</option>
                <option value="Desaparición forzada">Desaparición forzada</option>
                <option value="Secuestro">Secuestro</option>
                <option value="Reclutamiento forzado y utilización">Reclutamiento forzado y utilización</option>
                <option value="Desplazamiento">Desplazamiento</option>
                <option value="Homicidio">Homicidio</option>
                <option value="Masacre">Masacre</option>
                <option value="Minas antipersona - Munición sin explotar MAP-MUSE">Minas antipersona - Munición sin explotar MAP-MUSE</option>
                <option value="Tortura o tratos crueles, inhumanos o degradantes">Tortura o tratos crueles, inhumanos o degradantes</option>
                <option value="Lesiones personales (permanentes o transitorias)">Lesiones personales (permanentes o transitorias)</option>
                <option value="Delitos contra la integridad y libertad sexual">Delitos contra la integridad y libertad sexual</option>
                <option value="Despojo">Despojo</option>
                <option value="Daño en bienes muebles o inmuebles (terrorismo)- Amenaza a la vida, integridad y seguridad personal">Daño en bienes muebles o inmuebles (terrorismo)- Amenaza a la vida, integridad y seguridad personal</option>
            </select>
        </div>
    </td>           
</tr>

其中totalAmount是我用于CoreData的小数。

但是。尝试将我的小数转换为NSNumber()

时出现此错误

var currencyFormatter = NumberFormatter() currencyFormatter.usesGroupingSeparator = true currencyFormatter.numberStyle = NumberFormatter.Style.currency // localize to your grouping and decimal separator currencyFormatter.locale = NSLocale.current var priceString = currencyFormatter.stringFromNumber(NSNumber(totalAmount))

2 个答案:

答案 0 :(得分:1)

stringFromNumber已重命名为string(from:),例如

var priceString = currencyFormatter.string(from: NSNumber(totalAmount))

但您不必转换为NSNumber

var priceString = currencyFormatter.string(for: totalAmount)

答案 1 :(得分:0)

您可以拥有以下内容:

class YourClass: UIViewController {
  static let priceFormatter: NumberFormatter = {
    let formatter = NumberFormatter()

    formatter.formatterBehavior = .behavior10_4
    formatter.numberStyle = .currency

    return formatter
  }()
}

用法:

yourLabel.text = YourClass.priceFormatter.string(from: totalAmount)