Qual é o equivalente Objective-C para “toString ()”, para uso com NSLog?
-
12-09-2019 - |
Pergunta
Existe um método que pode substituir em minhas aulas personalizadas de modo que quando
NSLog(@"%@", myObject)
é chamado, ele irá imprimir os campos (ou o que eu considero importante) do meu objeto? Eu acho que eu estou procurando o equivalente Objective-C de toString()
de Java.
Solução
É o método de instância description
, declarado como:
- (NSString *)description
Aqui está uma implementação exemplo (graças a grahamparks):
- (NSString *)description {
return [NSString stringWithFormat: @"Photo: Name=%@ Author=%@", name, author];
}
Outras dicas
Adicione esta à @implementation
de sua classe Foto:
- (NSString *)description {
return [NSString stringWithFormat:@"Photo: Name=%@ Author=%@",name,author];
}
Você pode substituir o método de descrição de NSObject:
- (NSString *)description
Em matéria de login Eu recomendo este href="http://blog.mbcharbonneau.com/2008/10/27/better-logging-in-objective-c/" rel="noreferrer"> blogue para uma melhor exploração madeireira em Objective-C.
Existem duas funções que você pode usar.
- (NSString*)description
Esta será exibido quando você colocar o seu objeto como, ou seja, um parâmetro para NSLog
. A outra função descrição é:
- (NSString*)debugDescription
Este será chamado quando você faz po anInstanceOfYourClass
na janela de comando de depuração. Se sua classe não tem uma função debugDescription
, em seguida, basta description
será chamado.
Note que o NSObject
classe base tem description
implementado, mas é bastante nu-ossos: só exibe o endereço do objeto. É por isso que eu recomendo que você implementar description
em qualquer classe que você deseja obter informações de, especialmente se você usar o método description
em seu código. Se você fizer uso description
no seu código, eu sugiro que você implementar debugDescription
, bem como, também fazendo debugDescription
mais detalhada.
Esta saída as vozes disponíveis:
NSLog((@"speechVoices:%", [[AVSpeechSynthesisVoice speechVoices] description] ));