【发布时间】:2015-10-02 03:34:10
【问题描述】:
是的,我知道我应该使用NSDecimalNumber 来处理货币、金钱、价格...I've read this. 问题是,我改编了一个现有项目,它使用NSString 和NSNumber (float , double, CGFloat...) 作为货币。他们使用NSNumberFormatter 处理浮点数,我可以看到这不是一个大问题(还没有?)。这些货币存储在 coredata 中。
现在,如果我想将所有这些货币转换为NSDecimalNumber,我将不得不对代码进行大规模重构并迁移到 coredata。问题来了:
如果(我假设)
double、CGFloat、NSNumber可以保持与NSDecimalNumber一样大的值,我为什么要使用NSDecimalNumber,因为我可以使用 其他NSNumberFormatter?是因为性能吗?如果需要转换,我是否可以仅借助 MappingModel 进行自动迁移,当然),或者我有 调整自定义迁移策略?
因为 coredata 使用 NSString 和 NSNumber 作为货币,所以请帮我找到从这两种数据类型迁移的解决方案。我不习惯在 coredata 中使用NSDecimalNumber。提前致谢。
编辑
好的,我知道 NSDecimalNumber 是必要的。请帮我回答第二个问题:我可以使用mappingModel + FUNCTION($source.price, "decimalValue") 之类的东西进行自动迁移(这是不正确的,因为decimalValue 返回NSDecimal,而不是NSDecimalNumber)。我真的需要编写自定义迁移策略吗?
【问题讨论】:
标签: ios objective-c core-data currency core-data-migration