Il y a un problème avec seulement l'aide de NSLocaleCurrencySymbol + prix.stringValue: il ne gère pas les particularités des différentes locales, par exemple. si ils ont mis le symbole de la devise à l'avant ou pas. La norvège, le Danemark, la Suède et la Suisse, tous mettent leur devise, par exemple. 17.00 Kr. Aussi, la plupart(?) Les pays européens utilisent ',' au lieu de '.' pour les décimales, par exemple. "2,99 €" plutôt que "de 2,99€".
Un meilleur plan est d'utiliser NSNumberFormatter. Le "priceLocale" que le SKProduct retourné, comme Ed l'a démontré, est la clé. Il donne NSNumberFormatter l'intelligence de format un prix correctement.
Vous pouvez également faire cela beaucoup plus facile par l'ajout d'une nouvelle propriété à SKProduct à l'aide d'un Objectif-C catégorie. Ajouter les deux fichiers suivants à votre projet:
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
Ensuite, #import "SKProduct+priceAsString.h"
dans votre code, et vous devez simplement être en mesure d'utiliser product.priceAsString
dans le code.