如何使用Cocoa或Cocoa Touch框架在Objective-C中的货币之间进行转换?Objective-C中的货币转换
回答
嘛,你不是一个幸运儿:
https://github.com/davedelong/DDUnitConverter
只需将整个 “DDUnitConverter” 子文件夹复制到您的项目,然后执行:
#import "DDUnitConverter.h"
#import "DDCurrencyUnitConverter.h"
- (void) convertCurrency {
DDUnitConverter *converter = [DDUnitConverter currencyUnitConverter];
NSNumber *from = [NSNumber numberWithInt:42];
NSNumber *to = [converter convertNumber:from fromUnit:DDCurrencyUnitUKPoundSterling toUnit:DDCurrencyUnitUSDollar];
NSLog(@"new value: %@", to);
}
,将转换£42到美元。
价格从IMF自动拉,但如果你真的需要,您可以在单位转换器实例调用-refreshExchangeRates
。
-convertNumber:fromUnit:toUnit:
呼叫将阻塞,直到费率可以下载和解析。随后的通话将只使用已经下载的汇率。
另一种方法是使用YQL(Yahoo查询语言)来检索最新的费率。 雅虎的开发网站使Objective-C开始非常容易,并且YQL上有很多SO例子。 http://developer.yahoo.com/social/sdk/objectivec/
您可能会发现雅虎非常好,很自由,他们的条款&许多数据API的条件。它比Dave使用的非专用API要脆弱得多。 Dave编写了很棒的代码,但IMF TSV文件几乎没有保证可用作YQL服务。
其实我已经选择:
https://github.com/davedelong/DDUnitConverter
价格从IMF,但在转换过程中拉,有使用NSDecimalNumber功能(decimalNumberByMultiplyingBy和decimalNumberByDividingBy问题:他们不,如果你不给正确的结果使用由字符串创建NSDecimalNumber VAR的),所以我对这样的转换方法,现在它的工作:
DDUnitConverter.m
- (NSNumber *)convertNumber:(NSNumber *)number fromUnit:(DDUnit)fromUnit toUnit:(DDUnit)toUnit {
if (fromUnit == toUnit) { return number; }
//make sure it's an NSDecimalNumber
NSDecimalNumber *source = [NSDecimalNumber decimalNumberWithDecimal:[number decimalValue]];
NSDecimalNumber *convertToBaseUnit = [[self class] multiplierForUnit:fromUnit];
NSDecimalNumber * n1 = [NSDecimalNumber decimalNumberWithString:[source stringValue]];
NSDecimalNumber * n2 = [NSDecimalNumber decimalNumberWithString:[convertToBaseUnit stringValue]];
NSDecimalNumber *valueInBaseUnit = [n1 decimalNumberByMultiplyingBy:n2];
NSDecimalNumber *convertFromBaseUnit = [[self class] multiplierForUnit:toUnit];
if ([convertFromBaseUnit isEqual:[NSDecimalNumber zero]]) {
convertFromBaseUnit = [NSDecimalNumber one];
}
NSDecimalNumber * n3 = [NSDecimalNumber decimalNumberWithString:[valueInBaseUnit stringValue]];
NSDecimalNumber * n4 = [NSDecimalNumber decimalNumberWithString:[convertFromBaseUnit stringValue]];
NSDecimalNumber *valueInTargetUnit = [n3 decimalNumberByDividingBy:n4];
return valueInTargetUnit;
}
其工作很多... – sohil 2017-06-05 16:50:19
- 1. 转换货币
- 2. Rails中的货币转换
- 3. 货币转换器
- 4. Django货币转换
- 5. Javascript货币转换
- 6. Angular2管转换货币
- 7. angularjs货币转换器
- 8. 转换条纹货币
- 9. 谷歌货币转换器
- 10. WebServicex货币转换器API
- 11. Magento完成货币转换
- 12. 货币转换器问题
- 13. 货币转换程序
- 14. 转换货币价值
- 15. 转换为货币格式
- 16. 熊猫中的货币转换
- 17. 在HTML中的货币价格转换
- 18. 在前面转换货币的货币,angularJS
- 19. 收集从geoplugin货币转换器返回的货币 - PHP
- 20. 转换成ISO 4217的数字货币代码货币名称
- 21. 将货币/货币转换为Cent,反之亦然
- 22. 在Swift中创建货币转换器
- 23. 如何在python中转换货币?
- 24. 用于货币转换的PHP脚本
- 25. 使用angularjs的货币转换器
- 26. 以双向转换货币的问题
- 27. 熊猫数据帧的货币转换
- 28. 需要用于货币转换的API
- 29. 货币转换在Ruby on Rails的
- 30. 转换的BigDecimal字符串货币
这是一个太宽泛的问题。将问题分解成几个步骤(“从Web服务获取信息”,“解析信息”,“显示信息”),研究每个步骤,并发布有关您无法弄清楚的步骤的具体指出的问题。 – 2011-03-02 18:38:26
@JoshuaNozzi:我同意,*除非*有人已经为你做了工作;) – 2011-03-02 21:44:03
Sacha确实是个幸运的家伙。 ;-) – 2011-03-02 21:49:17