Существует проблема с использованием только NSLocaleCurrencySymbol + price.stringValue: он не обрабатывает особенности различных локалей, например. ставят ли они символ валюты впереди или нет. Норвегия, Дания, Швеция и Швейцария все ставят свою валюту после, например. 17.00Kr. Кроме того, большинство (?) Европейских стран используют «,» вместо «.» для десятичных дробей, например. «2,99 €», а не «2,99 €».
Лучше всего использовать NSNumberFormatter. "PriceLocale", который вернул SKProduct, как продемонстрировал Эд, является ключевым. Это дает NSNumberFormatter умения правильно форматировать цену.
Вы также можете сделать это намного проще, добавив новое свойство в SKProduct с помощью категории Objective-C. Добавьте следующие два файла в ваш проект:
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
Тогда, #import "SKProduct+priceAsString.h"
в вашем коде, и вы просто сможете использовать product.priceAsString
в коде.