sadece NSLocaleCurrencySymbol + price.stringValue kullanarak bir sorun var: bu örneğin farklı yerel, özelliklerinden söz işlemez. para sembolünü öne mi koyup koymadıkları. Norveç, Danimarka, İsveç ve İsviçre'nin hepsi para birimini, örneğin. 17.00Kr. Ayrıca, çoğu (?) Avrupa ülkesi 'yerine' yerine 'kullanır. ondalık, örneğin. "2,99 €" yerine "2,99 €".
NSNumberFormatter kullanmak daha iyi bir plandır. Ed'in gösterdiği gibi SKProduct'un döndürdüğü "priceLocale" anahtardır. NSNumberFormatter'ı bir fiyatı doğru şekilde biçimlendirmek için verir.
Ayrıca, bir Objective-C kategorisini kullanarak SKProduct'a yeni bir özellik ekleyerek bunu çok daha kolay hale getirebilirsiniz.
SKProduct + priceAsString.h:
#import <Foundation/Foundation.h>
#import <StoreKit/StoreKit.h>
@interface SKProduct (priceAsString)
@property (nonatomic, readonly) NSString *priceAsString;
@end
SKProduct + priceAsString.m:
#import "SKProduct+priceAsString.h"
@implementation SKProduct (priceAsString)
- (NSString *) priceAsString
{
NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
[formatter setFormatterBehavior:NSNumberFormatterBehavior10_4];
[formatter setNumberStyle:NSNumberFormatterCurrencyStyle];
[formatter setLocale:[self priceLocale]];
NSString *str = [formatter stringFromNumber:[self price]];
[formatter release];
return str;
}
@end
projenize aşağıdaki iki dosya ekleme
Kodunuzdaki Sonra
, #import "SKProduct+priceAsString.h"
ve sadece kodunda product.priceAsString
kullanmak gerekir.
Bu güzel bir çözüm, bunu eklediğiniz için teşekkürler! Cevabını çözümüne değiştirdim. – favo
Bunu farklı para birimleriyle nasıl test edeceğinize dair bir fikriniz var mı? – knagode
Her nasılsa bu bana "US $" cevabı veriyor. Bunu iOS6'ya yükselttiğimde fark ettim, herhangi bir fikir neden? –
schystz