2014-04-12 5 views
2

앱 구매시 현지 통화 기호가 사용자의 현지 통화에 맞게 나타나기를 바랍니다. NSLocaleCurrencySymbol을 사용자가있는 주요 탐지 소스로 사용하는 것이 안전합니까? 내 코드의 일부 Heres :현지 통화 기호가 앱 구매시 맞음

  NSLocale *theLocale = [NSLocale currentLocale]; 
    NSString *symbol = [theLocale objectForKey:NSLocaleCurrencySymbol]; 
    NSString *cost = [NSString stringWithFormat:@"%@",product.price]; 

기본적으로 사용자가 iOS 기기를 구입할 때 각 기기의 국가 별 설정에서 자동으로 올바른 지역 형식이 사용됩니까?

답변

7

당신은 NSNumberFormatter 사용하려는 : 이것은 다음 올바른 decimalisation, 분리와 통화를 포맷합니다

let formatter = NSNumberFormatter() 
formatter.numberStyle = .CurrencyStyle 
formatter.locale = product.priceLocale 
let cost = formatter.stringFromNumber(product.price) 

NSNumberFormatter *formatter = [NSNumberFormatter new]; 
[formatter setNumberStyle:NSNumberFormatterCurrencyStyle]; 
[formatter setLocale:product.priceLocale]; 
NSString *cost = [formatter stringFromNumber:product.price]; 

스위프트

오브젝티브 C를하고 통화 기호입니다.

+0

내 아이폰의 국가 별 설정을 변경하면 내 앱 구입시 항상 영국 통화 기호가 표시되기 때문에 테스트 방법이 있습니까 ?? – pete

+0

실제로 테스트 할 수 있도록 장치가 아닌 SKProduct의 로케일 (따라서 통화)을 사용합니다. – Rich

+0

자, 통화 기호를 테스트하는 방법이 있습니까? – pete

2

SKProduct는 사용자 저장소의 로컬와 함께 제공, 당신이 사용할 수있는 당신은 그렇게 할 필요가 없습니다 -

NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init]; 
[numberFormatter setFormatterBehavior:NSNumberFormatterBehavior10_4]; 
[numberFormatter setNumberStyle:NSNumberFormatterCurrencyStyle]; 
[numberFormatter setLocale:product.priceLocale]; 
NSString *formattedString = [numberFormatter stringFromNumber:product.price]; 

여기 봐 -

Apple Docs

+0

당신의 도움을 주셔서 감사합니다. 예를 들어, 내 iPhone에서 지역 포맷을 미국으로 설정 한 경우 - 앱 구매시 테스트 할 때 £ (not 파운드)라고 표시됩니다. – pete

+1

예 : SKProduct는 사용자가 로그인 한 App Store 국가에 의해 설정됩니다. 사용자가 로컬로 설정하려고하면 사용자에게 잘못된 가격을 제시하게됩니다. 테스트해야하는 방법은 다른 앱 스토어에서 테스트 계정을 여는 것입니다. 통화를 확인하십시오 – shannoga

2

을 신속

에서
var currency_format = NSNumberFormatter() 
currency_format.numberStyle = NSNumberFormatterStyle.CurrencyStyle 
currency_format.locale = validProduct.priceLocale 
mylabel.text = currency_format.stringFromNumber(validProduct.price) 
2

Swift 3.0 및 S KProduct :

import StoreKit 

extension SKProduct { 
    func getLocalizedPrice()->String{ 
     let formatter = NumberFormatter() 
     formatter.numberStyle = .currency 
     formatter.locale = self.priceLocale 
     return formatter.string(from: self.price) 
     } 
} 
+0

좋은 답변입니다. 포맷터의'string (from : Number)'메소드는 선택 사항을 리턴하므로 반환 유형으로'String? '을 지정하거나 리턴하기 전에 unwrap을 강제해야합니다. –