swift - 在核心数据中保存小数和货币

标签 swift core-data currency

是否可以将带有分组分隔符和货币的数字保存到核心数据中,如果可以,有人可以为我指出正确的方向。

我有mile.text,它是带有分组分隔符的十进制数字,payPerMile.text是货币,然后grossPay.text也是货币。

一切计算和显示都很好,直到我保存它。我在保存时打印数字,分组分隔符之后的所有内容都消失了,并且货币行显示为 NaN。

@IBAction func save(_ sender: UIButton) {

    if let item = item {

        item.startdate = startDate.text
        item.unitnumber = unitNumber.text
        item.miles = NSDecimalNumber(string: miles.text ?? "0.0")
        item.paypermile = NSDecimalNumber(string: payPerMile.text ?? "0.00")
        item.grosspay = NSDecimalNumber(string: grossPay.text ?? "0.00")
        item.company = company.text
        item.destination = destination.text
        item.enddate = endDate.text

    } else if let entitydescription = NSEntityDescription.entity(forEntityName: "DriveAwayMain", in: pc) {

        let item = DriveAwayMain(entity: entitydescription, insertInto: pc)

        item.startdate = startDate.text
        item.unitnumber = unitNumber.text
        item.miles = NSDecimalNumber(string: miles.text ?? "0.0")
        item.paypermile = NSDecimalNumber(string: payPerMile.text ?? "0.00")
        item.grosspay = NSDecimalNumber(string: grossPay.text ?? "0.00")
        item.company = company.text
        item.destination = destination.text
        item.enddate = endDate.text

    }

最佳答案

NSDecimalNumber(string:) 仅接受普通数字,不接受格式化数字。如果用户输入格式化的货币值,那么您需要在 .currency 模式下使用 NumberFormatter 将字符串解析为数字。

示例:

print(NSDecimalNumber(string: "$4,560.45"))

输出:

NaN

使用NumberFormatter:

let curFmt = NumberFormatter()
curFmt.generatesDecimalNumbers = true
curFmt.numberStyle = .currency
if let num = curFmt.number(from: "$4,560.45") {
    print(num)
} else {
    print("Not valid currency number")
}

输出:

4560.45

关于swift - 在核心数据中保存小数和货币,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50439147/

相关文章:

swift - UIImageView 的移动和跳跃动画 : Swift 4

SwiftUI:如何使用 NavigationViews 切换到新的导航堆栈

ios - 在核心数据中添加相关实体会删除所有其他关系吗?

ios - 如何使用 NSFetchedResultsController 和多个获取的实体设置 collectionView(或 TableView)

swift - 是否可以保存来自不同 View Controller 的数据并将其显示在同一个 TableView 单元中?

c++ - moneypunct 是 Object International 吗?

ios - UIImageViews 在带有分页的 UIScrollView 中无法正确缩放

Swift - 附加工作不稳定

javascript - KnockOut 货币绑定(bind)处理程序

r - 如何在 valueBox shinydashboard 中格式化货币值?