Eu preciso testar se o objeto é do tipo NSString
ou UIImageView
. Como posso fazer isso? Existe algum tipo de método "isoftype"?
ios
objective-c
James Skidmore
fonte
fonte
[object isKindOfClass:[ClassName class]]
Respostas:
Se seu objeto é
myObject
e você deseja testar para ver se é umNSString
, o código seria:Da mesma forma, se você quiser testar
myObject
umUIImageView
:fonte
Você provavelmente usaria
Este é um método de
NSObject
.Para mais informações, consulte a
NSObject
documentação.É assim que você usa isso.
Você também pode tentar fazer algo assim
fonte
className
, ele pode ou não funcionar no OS X, mas não está no iOS e não deve ser usado para isso. Além disso, essesNSLog
s não fazem o que eu acho que você pretendia: eles estão verificando o nome da classe (sempre uma string) e a classe do codificador, estranhamente, em vez da classe do elemento real.NSLog(@"Is of type: %@", [element class]);
vai funcionar no iOS 7Quando você quiser diferir entre uma superClasse e a herdatedClass, poderá usar:
A utilização
- (BOOL)isKindOfClass:(Class)aClass
neste caso resultaria em TRUE nas duas vezes, porque a herdatedClass também é um tipo da superClasse.fonte
isMemberOfClass:
retornaráNO
ao lidar com subclasses.Ao executar um teste simples, pensei em documentar o que funciona e o que não funciona. Frequentemente, vejo pessoas verificando se a classe do objeto é membro da outra classe ou é igual à outra classe.
Para a linha abaixo, temos alguns dados mal formados que podem ser um
NSArray
, umNSDictionary
ou(null)
.Estes são os testes que foram realizados:
isKindOfClass
funcionou muito bem enquantoisMemberOfClass
não.fonte
Você pode usar o seguinte código, caso queira verificar os tipos de tipos de dados primitivos.
fonte
Simples, [sua classe de objeto] retornará o nome da classe de seu objeto.
fonte
Class
objeto. No entanto,description
esse objeto será o nome da classe como uma sequência, portanto, você ainda poderá registrá-lo no console.