gpt4 book ai didi

objective-c - iTunes 搜索 API,查找免费价格

转载 作者:行者123 更新时间:2023-11-29 04:17:02 25 4
gpt4 key购买 nike

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

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 是相同的:

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

坦白说,我对此有点困惑。任何帮助,将不胜感激。如果您能解释为什么会发生这种情况,以便我能够学会不再这样做,那么我将更加感激!

问候,
迈克

最佳答案

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

== 与对象比较的不是值而是对象指针(内存地址)


if(searchResult.price.floatValue == free.floatValue)

请注意, float 不精确,通常不应用于任何计算或比较。不过在这种情况下没问题

关于objective-c - iTunes 搜索 API,查找免费价格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13550102/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com