Objective-C中的货币转换

时间:2011-03-02 18:19:57

标签: objective-c cocoa-touch cocoa currency

如何使用Cocoa或Cocoa Touch框架在Objective-C中转换货币?

3 个答案:

答案 0 :(得分:5)

嗯,你不是一个幸运的家伙:

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:调用将阻止,直到可以下载和解析费率。后续通话将仅使用已下载的汇率。

答案 1 :(得分:1)

其实我选择了:

https://github.com/davedelong/DDUnitConverter

费率是从国际货币基金组织提取的,但在转换期间,使用NSDecimalNumber函数存在问题(decimalNumberByMultiplyingBy和decimalNumberByDividingBy:如果你不使用由字符串创建的NSDecimalNumber var,它们不会给出正确的结果),所以我更正了转换方法像这样,现在它起作用了:

DDUnitConverter.m

#include <stdio.h>

#define TOTAL_ELEMENTS (sizeof(array) / sizeof(array[0]))
int array[] = {23, 34, 12, 17, 204, 99, 16};

int main()
{
    int d;

    for(d = -1; d <= (int)(TOTAL_ELEMENTS - 2); d++)
        printf("%d\n", array[d + 1]);

    return 0;
}

答案 2 :(得分:0)

另一种方法是使用YQL(Yahoo Query Language)来检索最新的费率。 雅虎的开发网站使得开始使用Objective-C非常容易,而且YQL上有很多SO示例。 http://developer.yahoo.com/social/sdk/objectivec/

你可能会发现雅虎的条款和条款非常好,也很自由。许多数据API的条件。它也比Dave使用的非专用API脆弱得多。 Dave编写了很棒的代码,但IMF TSV文件并不像YQL服务那样保证可用。