首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >iTunes搜索应用程序接口,查找免费价格

iTunes搜索应用程序接口,查找免费价格
EN

Stack Overflow用户
提问于 2012-11-25 18:20:08
回答 1查看 114关注 0票数 0

在搜索iTunes商店时,我遇到了一个小问题。当价格为0.00时,我尝试将标签的文本更改为“免费”,而不是显示价格。问题是,我对两个NSDecimalNumber的比较失败了。这是我目前所在的位置。

代码语言:javascript
复制
NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
[formatter setNumberStyle:NSNumberFormatterCurrencyStyle];
[formatter setCurrencyCode:self.searchResult.currency];
NSString *price = [formatter stringFromNumber:self.searchResult.price];

NSDecimalNumber *free = [[NSDecimalNumber alloc] initWithFloat:0.00f];

NSLog(@"Price:%@",price);
NSLog(@"Free:%@",free);
NSLog(@"self.searchResult.price: %@", self.searchResult.price);

if (self.searchResult.price == free) {
    NSString *freeText = [NSString stringWithFormat:@"FREE"];
    self.priceLabel.text = freeText;
}
else {
    self.priceLabel.text = price;
}
NSLog(@"priceLabel:%@", self.priceLabel.text);

真正奇怪的是,控制台甚至说freedel.searchResult.price是一样的:

代码语言:javascript
复制
2012-11-24 20:01:16.178 StoreSearch[1987:c07] Price:$0.00
2012-11-24 20:01:16.178 StoreSearch[1987:c07] Free:0
2012-11-24 20:01:16.178 StoreSearch[1987:c07] self.searchResult.price: 0
2012-11-24 20:01:16.179 StoreSearch[1987:c07] priceLabel:$0.00

坦率地说,我对此有点困惑。任何帮助都将不胜感激。如果你能解释为什么会发生这样的事情,让我学会不再犯同样的错误,我会更加感激!

致以敬意,

麦克

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-11-25 18:35:35

您获得了NSNumber和另一个NSNumber (NSDecimalNumber),并且执行了指针相等检查,您需要调用isEqual或比较原始的浮点值

== with objects不比较值,而是比较对象指针(内存地址)

代码语言:javascript
复制
if(searchResult.price.floatValue == free.floatValue)

请注意,浮点数是不精确的,通常不应用于任何计算或比较。不过,在这种情况下是可以的

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13550102

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档