Quero comparar o valor de NSString
a à string "Errado". Aqui está o meu código:
NSString *wrongTxt = [[NSString alloc] initWithFormat:@"Wrong"];
if( [statusString isEqualToString:wrongTxt] ){
doSomething;
}
Eu realmente preciso criar um NSString para "Wrong"?
Além disso, posso comparar o valor de um UILabel
's text
para uma cadeia sem atribuir o valor do rótulo para uma string?
objective-c
cocoa-touch
variables
Bryan
fonte
fonte
Respostas:
Não, por que não fazer apenas:
if([statusString isEqualToString:@"Wrong"]){ //doSomething; }
Usar
@""
simplesmente cria um literal de string, que é válidoNSString
.Sim, você pode fazer algo como:
UILabel *label = ...; if([someString isEqualToString:label.text]) { // Do stuff here }
fonte
if ([statusString isEqualToString:@"Wrong"]) { // do something }
fonte
Brian, também vale a pena acrescentar aqui - os outros estão, é claro, corretos ao dizer que você não precisa declarar uma variável de string. No entanto, da próxima vez que você quiser declarar uma string, não precisará fazer o seguinte:
NSString *myString = [[NSString alloc] initWithFormat:@"SomeText"];
Embora o procedimento acima funcione, ele fornece uma variável NSString retida que você precisará liberar explicitamente após terminar de usá-la.
Da próxima vez que você quiser uma variável de string, pode usar o símbolo "@" de uma maneira muito mais conveniente:
NSString *myString = @"SomeText";
Isso será liberado automaticamente quando você terminar, para evitar vazamentos de memória também ...
Espero que ajude!
fonte
new
ou,copy
por exemplonewObject
(deNSDictionaryController
) oumutableCopy
(deNSObject
) developer.apple.com/documentation/Cocoa/Conceptual/MemoryMgmt/…Você também pode usar os métodos da classe NSString, que também criarão uma instância autoreleased e têm mais opções como formatação de string:
NSString *myString = [NSString stringWithString:@"abc"]; NSString *myString = [NSString stringWithFormat:@"abc %d efg", 42];
fonte