Dicas de Programação para Objective-C / iOS 5

Posted on agosto 8, 2012. Filed under: Objective-C, Tips | Tags:, , , |

Introdução

Neste artigo separei algumas dicas de desenvolvimento para iOS 5. São dicas que me foram úteis durante o desenvolvimento de uma aplicação para Iphone. Espero que possam ser úteis para você também.

Manipulando Strings

  • Obtendo o tamanho de uma string
  •   NSString* string = @"Hello World";
      int tamanho = [string length];
    
  • Convertendo inteiro para String
  • [NSString stringWithFormat:@"%d",tamanho];
    
  • Concatenando Strings
  • NSString* string = @"Hello World";
    NSString* string2 = @"!";
    string = [string stringByAppendingString: @" Douglas"];
    string = [string stringByAppendingString: string2];
    

    A string final ficara com o valor:
    Hello World Douglas!

  • Substituição em Strings
  • NSString* string3 = [string stringByReplacingOccurrencesOfString:@"Hello World" withString:@"Ola Mundo"];
    

    A string final ficara com o valor:
    Ola Mundo Douglas!

  • Obtendo caracter de determinada posição
  • if([string3 characterAtIndex:0] == 'O') {
            // ok
    }
    

    O caracter na primeira posição será O

    Expressões Regulares

  • O código abaixo representa uma expressão regular responsável por fazer um matching em uma string. A condição retorna verdadeiro se o valor checado contém somente números:
  • NSString *regex1 = @"^[0-9]+$";
    NSPredicate *numberTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", regex1];
    if([numberTest evaluateWithObject:@"123456789"]) {
        myLabel.text = novoCpf;
    }
    

    O código acima entra dentro da condição, devido à string "123456789" conter somente números.

  • A expressão regular abaixo é usada para fazer uma substituição em string através de um determinado pattern. A operação irá remover de uma string tudo aquilo que não for número.
  • NSString* cpf = @"111.111.111-11";
    NSError *error = NULL;
    NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"[^0-9]" options:NSRegularExpressionCaseInsensitive error:&error];
    NSString *novoCpf = [regex stringByReplacingMatchesInString:cpf options:0 range:NSMakeRange(0, [cpf length]) withTemplate:@""];
        
    myLabel.text = novoCpf;
    

    A string novoCpf conterá apenas números. (De 111.111.111-11 para 11111111111)

    Escondendo/Habilitando elementos

  • Esconder qualquer objeto da tela é bem simples. Basta setar a propriedade alpha do elemento para 0. Caso queira que o elemento volte a ficar visivel, bastar setar o alpha para 1
  • // escondendo elementos na tela
    MyProgressbar.alpha = 0;
    MyAlert.alpha = 0;
    MyButton.alpha = 0;
    MyLabel.alpha = 0;
    
    // mantendo elemento visivel
    MyProgressbar.alpha = 1;
    ...
    

    Atualizando elementos da tela dentro de loop

    Ao atualizar algum elemento da tela dentro de um loop (Label, Barra de Progresso, …), a atualização no objeto será refletido somente após à finalização do loop. Para que o elemento seja atualizado imediatamente, e não somente ao final do loop, é necessário incluir a seguinte linha, logo após à instrução que modifica o elemento:

    [[NSRunLoop currentRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDate distantPast]];
    

    Essa funcionalidade é ideal para contadores e barras de progresso. Segue abaixo um exemplo mais detalhado.

    for(int i = 0; i < 100; i++) {
            myLabel.text = [NSString stringWithFormat:@"%d",i];
            usleep(5000);
            [[NSRunLoop currentRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDate distantPast]];
    }
    

    Make a Comment

    Deixe um comentário

    Preencha os seus dados abaixo ou clique em um ícone para log in:

    Logotipo do WordPress.com

    Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

    Foto do Google

    Você está comentando utilizando sua conta Google. Sair /  Alterar )

    Imagem do Twitter

    Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

    Foto do Facebook

    Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

    Conectando a %s

Liked it here?
Why not try sites on the blogroll...

%d blogueiros gostam disto: