Dicas de Programação para Objective-C / iOS 5
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];
[NSString stringWithFormat:@"%d",tamanho];
NSString* string = @"Hello World"; NSString* string2 = @"!"; string = [string stringByAppendingString: @" Douglas"]; string = [string stringByAppendingString: string2];
A string final ficara com o valor:
Hello World Douglas!
NSString* string3 = [string stringByReplacingOccurrencesOfString:@"Hello World" withString:@"Ola Mundo"];
A string final ficara com o valor:
Ola Mundo Douglas!
if([string3 characterAtIndex:0] == 'O') { // ok }
O caracter na primeira posição será O
Expressões Regulares
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.
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
// 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]]; }
Deixe um comentário