iTunes Storeを検索しているときに、少し問題が発生しました。価格が0.00の場合、価格を表示するのではなく、ラベルのテキストを「FREE」に変更しようとしています。問題は、2つ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);
本当に奇妙なのは、コンソールが両方とも同じであるとさえ言っていることfree
ですdel.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
率直に言って、私はこれに少し混乱しています。どんな助けでもいただければ幸いです。二度とやらないように、なぜこうなったのか説明していただければ、さらにありがたいです!
よろしく、
マイク