Vinicius Quaiato

{tecnologia, conceitos, negócios, idéias, práticas, .NET, ruby, osx, ios e algo mais}

Formatação de valores em Reais(R$) no iOS


Já que começamos a criar uma app que lida com valores monetários precisamos garantir que a nossa aplicação exiba corretamente os dados. (confira todos os posts sobre iOS)

##Formatando valores em Reais R$ Vamos formatar nosso valor de acordo com uma cultura específica, no nosso caso pt-BR, para deixarmos nosso valores monetário em Reais. Modificando um pouco nosso método addGasto (do projeto anterior) teremos isso:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
-(void)addGasto:(id)sender{
    [gastos addGastoFromString: valorDoGasto.text];
    valorDoGasto.text = @"";

    numeroDeGastos.text = [NSString stringWithFormat:@"%i", [gastos totalDeGastos]];

    id somatorioGastos = [gastos somaDosGastos];

    NSNumberFormatter *formatter = [[NSNumberFormatter alloc]init];
    [formatter setNumberStyle:NSNumberFormatterCurrencyStyle];
    NSLocale *locale = [[NSLocale alloc] initWithLocaleIdentifier:@"pt_BR"];
    [formatter setLocale: locale];

    totalDosGastos.text = [formatter stringFromNumber:somatorioGastos];
}

A novidade aí está na linha 9 onde criamos um objeto NSNumberFormatter. Esta classe fornece uma séria de configurações para formatarmos números: separadores decimais, separadores de milhar, porcentagem, códigos monetários, formatos, etc.

Na linha 10 configuramos este formatador como um formatador monetário. Nas linhas 11 e 12 é que está nosso segredo: criamos um objeto NSLocale utilizando um locale identifier, no nosso caso pt-BR. Depois de criado nosso objeto nós configuramos o locale no nosso formatter.

Feito isso na linha 14 apenas obtemos o número formatado passando a mensagem stringFromNumber para nosso formatador e colocamos o mesmo em nosso label, como vemos abaixo:

##Resumo A formatação de valores é algo que sempre consome um pouco, mas não é nenhum bicho de set cabeças nesse caso. Se encapsularmos isso em um método que recebe um valor e retorna uma string formatada fica tudo bastante simples (no código completo do github isso está em um método separado).

Como internacionalização é um assunto mais abrangente preferi deixar para o futuro :P

Como sempre o código do projeto está no github: https://github.com/vquaiato/ios-blog-samples/tree/master/somatorioDeContasLocale

Voltar

Fork me on GitHub